Confirmar la firma de JWT o hacer una llamada a la API (JWT vs. auth)

2

Dada una configuración en la que las credenciales de los usuarios se almacenan en un servidor, pero se llamará a los servicios web de clientes externos, ¿parece razonable lo siguiente?

  1. Cuando los clientes desean iniciar sesión, envían un nombre de usuario / contraseña al servidor (sobre ssl, confirmado contra el hash de scrypt con sal almacenado en la base de datos del servidor)

  2. El servidor comprueba las credenciales y, tras la validación, crea los tokens JWT que contienen el ID de usuario y lo firma con el lado privado del par de claves públicas / privadas de RSA. (más específicamente, usa los métodos de AppEngine para firmar- enlace )

  3. Los clientes usan la clave pública y verifican que la firma sea correcta. Desde ese momento en adelante, consideran que el usuario ha iniciado sesión. Tenga en cuenta que la clave pública se puede agrupar con el cliente, o solicitar al servidor y guardar en caché.

  4. Aunque el cliente ahora considera que el usuario que inició sesión en las llamadas a la API posteriores al servidor continúa proporcionando el token jwt, que confirma el ID de usuario y la firma con la misma clave pública (tenga en cuenta que este puede ser un servidor diferente al del uno que proporcionó el token inicial). Por lo tanto, las operaciones más significativas (como cambiar contraseña ) aún se verifican en el lado del servidor, aunque con el mismo token que el que se proporcionó a los clientes. (es decir, un cliente puede mostrar lo que quiera, pero la acción real realmente confirma con la clave pública apropiada. La identificación de los datos del usuario, aparte de su ID, también requiere una llamada api para garantizar aún más a los clientes comportarse bien)

¿Hay algún problema con esta imagen? Parece que oauth2 insiste en alguna llamada adicional, es decir, el mantra de que auth es autorización, no autenticación, por lo que se debe hacer una llamada adicional debe (como "obtener perfil") antes de que consideremos que el usuario está debidamente autenticado .

¿Por qué es eso? ¿Qué ventajas tendría auth2 sobre esta metodología para este caso de uso específico?

    
pregunta davidkomer 09.03.2016 - 21:53
fuente

0 respuestas

Lea otras preguntas en las etiquetas