Publico aquí para saber si mi mecanismo de autenticación a través de websocket es correcto.
La API de mi aplicación funciona a través de websocket en lugar del resto HTTP estándar. Cada vez que se accede a una ruta que está protegida a través de websocket, el JWT se envía con el mensaje de websocket en el cliente al servidor. En el servidor, si el recurso accedido necesita autenticación, se verifica el JWT.
Estoy usando sockJS y en su github indican: .
Un iframe se aloja desde el dominio de destino SockJS. Eso significa que el servidor recibirá solicitudes del iframe, y no del dominio real. El dominio de un iframe es el mismo que el dominio SockJS. El problema es que cualquier sitio web puede incrustar el iframe y comunicarse con él, y Solicitud de establecimiento de la conexión SockJS. Uso de cookies para La autorización en este escenario dará lugar a la concesión de pleno acceso a SockJS se comunica con su sitio web desde cualquier sitio web. Esto es un ataque CSRF clásico.
Pero este no parece aplicarse a JWT sobre websocket en lugar de cookies en HTTP, ¿o no?
También me pregunto si podría autenticarme solo una vez y mantener una bandera authenticated: true
en el lado del servidor de la conexión websocket. Tiene sentido no tener que autenticar al usuario en cada solicitud.
Según entiendo JWT, tienen un límite de tiempo con expire
, por lo que no funcionaría, ¿no?
Para resumir:
- ¿Puedo autenticar solo una vez?
- ¿Hay algún defecto obvio aquí, como CSRF?