Optimización de un usuario autenticado en microservicios de forma segura

1

En una plataforma que sigue el marco de OAuth 2.0 para la autorización y una arquitectura basada en microserivce, ¿cuál es una forma segura de pasar un usuario de un microservicio a otro en la misma plataforma sin tener que autenticar al usuario nuevamente?

Contexto detallado

Suponga que un usuario intenta registrarse para un servicio en la plataforma (llame a este servicio Microservice A), luego como parte de Flujo de concesión de autorización el usuario (propietario del recurso) debe estar autenticado. Suponiendo que esto se haga con éxito, finalmente se emitirá un token de acceso y el usuario podrá continuar. Ahora suponga que el usuario debe ser redirigido a otro microservicio (llame a este servicio Microservicio B) en la misma plataforma para completar un viaje de negocios diferente. Microservice A solo puede acceder al token de acceso (JWT firmado). El servidor de autorización no almacena el token de acceso (puede serlo, si es necesario, y si es seguro hacerlo). Para que el usuario acceda al Microservicio B, ¿cuál debería ser el proceso a seguir para otorgar la autorización al cliente para permitirle al usuario acceder al viaje del usuario del Microservicio B sin tener que volver a autenticar al usuario?

Posible solución

Una idea sería delegar todas las solicitudes de redireccionamiento a cualquier microservicio en la misma plataforma al servidor de autorización. La solicitud delegada tendría el JWT firmado y, por lo tanto, el servidor de autorización puede consultar la autenticidad del JWT y, por lo tanto, saber qué usuario está autenticado. Si está bien, entonces el servidor de autorización puede emitir un nuevo código de concesión de autorización y luego redirigir al microservicio de destino según el flujo de redirección en el flujo de concesión de autorización de OAuth. El microservicio de destino puede solicitar un token de acceso y así completar el paso de autorización. Con esta solución, se supone que el usuario está autenticado, ya que se proporcionó un JWT válido.

    
pregunta Mika'il 20.12.2018 - 11:27
fuente

0 respuestas

Lea otras preguntas en las etiquetas