autenticación / autorización de API de microservicios y multiservicios

0

Busco consejos sobre cómo podemos implementar la autenticación y la autorización para multitenancy con un número de escenarios ligeramente diferente.

Estamos construyendo un conjunto de API, algunas de las cuales son accesibles internamente (dentro de la organización) mientras que otras serán accesibles externamente (internet).

Se puede acceder "indirectamente" a los que son accesibles de forma interna y directa dentro de la organización a través de servicios más abstractos que están expuestos externamente.

debido a la naturaleza compleja de nuestro negocio (compañía de telecomunicaciones), los consumidores de las API externas (en inglés) se presentarán en diferentes formas. Algunos serán nuestras subsidiarias, mientras que otros serán terceros, proveedores y desarrolladores.

Supondré que sea un gran consumidor de una organización o un desarrollador de una sola persona, todos son identificables de la misma manera.

La parte difícil ahora es que, en ciertos escenarios, es posible que algunos consumidores no puedan acceder a los recursos expuestos públicamente. ejemplo:

  • La subsidiaria X puede acceder a todos los recursos y operaciones de CRUD en el recurso Y
  • Sin embargo, la tercera parte Z solo puede recuperar Probablemente me estoy aventurando en el territorio ACL ahora ...

Además, para agregar complejidad al asunto, hay ciertos escenarios de "separación estructural" (impuestos por el gobierno) que justifican la segregación de datos, pero no iré más allá por ese agujero de conejo.

También existe el problema de que varios inquilinos accedan a un sistema que no atiende a multitenidad. :)

Así que hay mucho allí, así que me pregunto cuáles son las opiniones, los consejos y el enfoque de las personas.

Esperamos que auth2.0 junto con OpenID con una solución ACL personalizada pueda funcionar.

EDITAR:

Las disculpas tuvieron problemas con mi dispositivo móvil cuando se publicó la pregunta y se cortó la mitad.

Solo algunos consejos generales para el enfoque.

¿Es esto algo que OpenID y Oauth2 con servidor de derechos podrían atender?

    
pregunta Sash 12.11.2015 - 21:30
fuente

2 respuestas

1

enlace

La entrada de blog anterior sugiere mantener los permisos de nivel de objeto dentro de cada microservicio. Así que puede autenticar y pasar user_id (o group_id) a través de algo como OAuth 2.0 y tokens, pero haga el trabajo real de respuesta de autorización / filtrado dentro del microservicio.

Este enfoque mantiene el espíritu "vagamente acoplado" de los microservicios.

    
respondido por el johnL 18.02.2016 - 19:03
fuente
0

Cada consumidor de API es un cliente OAuth 2.0 y está registrado en su servidor de autorización para ciertos ámbitos . Los ámbitos de OAuth 2.0 se pueden ver como permisos, por lo que ya puede aplicar un cierto número de reglas de control de acceso basadas en ámbitos. Cuando un cliente inicia un flujo de autorización, solicita al usuario su consentimiento para una serie de ámbitos, y el token de acceso generado al final "llevará" estos ámbitos.

Su recurso X puede requerir que los clientes tengan un token con alcance READ_X, mientras que el recurso Y requiere que los clientes tengan un token con alcance WRITE_Y.

Si necesita permisos de grano más fino, también puede otorgar roles / permisos a sus usuarios. Sin embargo, eso está fuera de la especificación OAuth 2.0, dependerá de las herramientas que utilice.

La tenencia múltiple se puede implementar de varias maneras según su caso.

    
respondido por el Michael Tecourt 27.11.2015 - 10:24
fuente

Lea otras preguntas en las etiquetas