Microservice to Microservice Auth

11

Estamos planeando una nueva arquitectura que utilizará un backend de muchos microservicios diferentes que deberán comunicarse entre sí, así como las solicitudes de campo de sistemas que no forman parte del servicio. En la última parte no estoy hablando de clientes externos, solo estoy hablando de sistemas dentro de nuestra red, pero eso no es parte de esta arquitectura de microservicio.

¿Cuál es la mejor manera de manejar la autenticación / autorización para aquellos servicios que se comunican entre sí? Normalmente veo a Oauth como la solución para microservicios, pero eso suele suceder cuando se habla de clientes externos que utilizan el servicio. ¿Lo mismo ocurre con los microservicios que se comunican entre sí?

    
pregunta Myelin 05.01.2016 - 15:57
fuente

2 respuestas

3

OAuth 2 concesión de credenciales de cliente está diseñada para las comunicaciones entre servicios. La autenticación para la concesión de credenciales de cliente generalmente implica pasar un secreto compartido, en lugar de un nombre de usuario / contraseña. El secreto compartido se utiliza para cumplir con el requisito RFC de un "cliente confidencial" para la concesión de credenciales de cliente.

Si aún no tiene un servidor de autenticación en mente, le sugiero que eche un vistazo a Keycloak , al menos para una prueba de concepto - es una oferta de código abierto de RedHat. Utiliza Open ID Connect (OIDC), que es una extensión de OAuth 2 (agrega una capa de ID). documentación del administrador del servidor sobre las cuentas de servicio de Keyclok para más detalles.

    
respondido por el HTLee 19.05.2016 - 07:56
fuente
0

He estado trabajando en un caso similar. Implementé OAuth2 siguiendo RFC-6749

Como quería tener un microservicio de autorización, este solo manejaría las operaciones relacionadas con la Autenticación y funciona para fuera y dentro de la red.

Las API de este servicio son lo suficientemente genéricas para manejar todas las necesidades de OAuth2. Le recomiendo que siga el flujo en la sección "1.2. Flujo de protocolo" para el RFC-6749 y Eso debería ayudarlo a diseñar sus servicios de tal manera que las responsabilidades sean únicas para cada servicio, que es lo que realmente quiere lograr cuando trabaja con microservicios.

    
respondido por el R Rodriguez 13.01.2016 - 12:12
fuente

Lea otras preguntas en las etiquetas