Actualmente estoy creando una api para que una aplicación se comunique. Los puntos finales de API estarán protegidos, por lo que me gustaría usar un flujo de OAuth con JWT para la seguridad. Mi flujo será algo como esto:
- Recibir y validar las credenciales de usuario
- Emita un token de acceso (JWT) y actualícelo para obtener credenciales válidas
- Verifique la integridad del token de acceso y luego verifique la caducidad
- Si está vencido: envíe un 401 y espere recibir un token de actualización que luego se validará y se emitirá un nuevo token de acceso
- De lo contrario, utilice la reclamación de ID de usuario para recopilar más contexto y continuar con la solicitud \
Mis preguntas:
-
Integridad de JWT: Un JWT compacto consta de tres partes: encabezado, carga útil y firma. La firma se verifica aplicando el
alg
especificado en la sección del encabezado al encabezado codificado en base64url y las secciones de la carga útil separadas por un '.' y luego base64url codificando el valor producido. ¿Significa esto que es posible crear un token de acceso falso? Un token de acceso robado podría estar sin codificar, la identificación del usuario fue robada e insertada en un token de acceso muy similar, pero falso. Este token falso se firma como un JWT normal. Cuando el servidor reciba este token de acceso, ¿este token no mantendrá su integridad? -
Flujo de OAuth: ¿Parece que este es un flujo adecuado? Los tokens de actualización de un usuario se almacenarán en una base de datos para que puedan verificarse en el futuro (tendrán una larga vida útil ). El token de acceso se basará en su propia integridad y en la información que contiene, ya que su vida útil es muy breve.