He estado usando passport JS
session por un largo tiempo sin preocuparme realmente por la seguridad. Para el próximo proyecto, pensé en reemplazar session
con JWT
, pero surgen problemas relacionados con la seguridad a medida que investigo más sobre JWT
.
Entonces, si uso JWT
para la autenticación, hay dos tipos de tokens, auth token
y refresh token
. Cuando inicio sesión, obtengo refresh token
y esto se usa para comunicarme con el servidor de autenticación para recibir auth token
que se usará para obtener cualquier información confidencial de data server
. Pero este refresh token
, que debería ser comparativamente de larga duración en comparación con auth token
, que es de corta duración para ser actualizado por refresh token
, debe almacenarse en algún lugar. La sugerencia común ha sido localstorage
pero luego un token que puede generar un número infinito de auth token
está expuesto al lado del cliente, esto no se siente seguro.
Lo mismo se aplica a las sesiones. Cuando almacenamos sesiones usando bibliotecas como passport JS
. ID
(generalmente) se serializa en sessionStorage
. Luego, otro cliente puede tomar la sesión serializada y usarla para autenticarse en otro dispositivo (¿es cierto?).
Entonces, ninguno de estos dos métodos parece muy seguro (si lo que he dicho anteriormente es correcto). ¿Estamos utilizando JWT
y sessions
con los riesgos de seguridad mencionados o lo entiendo mal?