Tengo un back-end nodejs basado en koajs para mi aplicación personal / hobby. Implementé el manejo de sesión con tokens jwt. Ahora el cliente obtiene su token después de una autenticación de inicio de sesión exitosa, por lo que mi cliente angularjs almacena el token en algún lugar (actualmente en sessionStorage, pero para esta pregunta no nos importa el almacenamiento). Tengo dos preguntas
-
Cuando necesito actualizar el registro de usuario que representa el jwt, por ejemplo, el usuario activó 2FA, así que le pedí que proporcionara su número de teléfono y me gustaría establecerlo en el registro del usuario. Actualmente, después de una verificación exitosa en el número de teléfono, llamo a mi backend para actualizar el registro de usuario y creo un nuevo token JWT con el registro de usuario actualizado (excluyo la información confidencial del token jwt como hash pwd y otros ..., pero Me gustaría incluir el número de teléfono para uso del lado del cliente). Entonces, básicamente la pregunta es, ¿está bien crear un nuevo token cuando algunas de las credenciales cambian y actualizan el token del lado del cliente existente con este nuevo token? ¿Nunca debería crear otro token, solo para crear el único y solo después de una autenticación exitosa? ¿Cómo actualizo la carga útil en el token?
-
¿Cómo debo manejar los tokens jwt caducados? En mi mente tengo 3 (posibles) escenarios:
-
El jwt está configurado para una vida corta, digamos 15 minutos. Si el servidor backend responde con un "token ivalid" no autenticado 401 (supongo que este es el comportamiento predeterminado de koa-jwt), cerraré sesión automáticamente a mi cliente y requeriré una nueva autenticación. Pero también configuré un middleware complementario que es el último de la cadena en el backend para volver a crear el token con una caducidad actualizada y el cliente también reemplazaría el token existente con el actualizado. Por lo tanto, si el usuario está activo y utiliza la aplicación, todas las llamadas a API protegidas, en caso de éxito, crearían un nuevo token para reemplazar el token antiguo.
-
El jwt se establece como de larga duración, digamos 1 semana, y si caduca, me inscribo nuevamente en la autenticación del cliente.
-
Copie enlace . Aquí cuando creamos el token jwt después de una autenticación exitosa, enviamos un access_token y un refresh_token. Cuando el access_token caduca y el servidor responde con HTTP 401 'token no válido' (koa-jwt predeterminado), el cliente envía el refresh_token al respaldo para requerir un nuevo access_token (& opcionalmente un nuevo refresh_token). En este caso, no entiendo completamente cómo se verifica el refresh_token con el antiguo access_token para proporcionar un nuevo token. O ¿por qué necesitamos tener un refresh_token?
-
Básicamente, solo necesito consejos genéricos sobre los temas superiores (actualizaciones de JWT y vencimiento de JWT). Gracias