Autorización centralizada con proveedores de servicios distribuidos

1

Estoy pensando en implementar un servicio de inicio de sesión único con una administración de permisos centralizada para una red distribuida de proveedores de servicios (autenticación y autorización).

La parte acerca de la autenticación está mayormente resuelta (probablemente usaremos SAML). La parte más difícil es implementar una autorización centralizada, si es posible.

La única posibilidad que veo para hacer que esto funcione es que los proveedores de recursos le pregunten al servidor de autorización sobre los permisos de un usuario específico. El proveedor de recursos tendría que asignar esos permisos a las reglas locales para el usuario. El problema con esto es que aún depende del proveedor de recursos respetar e implementar la política proporcionada por el servidor de autorización.

¿Existe una solución para que el servidor central aplique los permisos / políticas de los usuarios?

    
pregunta Lukas_Skywalker 25.05.2015 - 21:42
fuente

1 respuesta

0

Sí, hay una solución y es incluso una norma. Se llama XACML , el lenguaje de marcado de control de acceso extensible. Al igual que SAML, es definido por OASIS . Donde SAML se enfoca en la autenticación, federación y autorización de grano grueso, XACML se enfoca en la autorización de grano fino basada en atributos y políticas.

Por ejemplo, puede definir políticas como:

A user with role == manager can do the action == view on a resource of type == medical record.

XACML define el lenguaje de la política, el esquema de solicitud / respuesta y la arquitectura. El siguiente diagrama muestra la arquitectura. Tiene una noción de un Punto de Decisión de Política (PDP) que es el servidor de autorización que se puede consultar desde varias ubicaciones en su arquitectura, por ejemplo. una capa de servicio, una API o incluso una capa de datos.

LamayoríadelasimplementacionesdeXACMLlebrindanunAPIbinariodepermiso/denegación,tambiénpartedelestándarXACML.Laimplementaciónenlaquetrabajo,Axiomatics,tambiéntedaunaAPIabierta,porejemplo."¿Qué puede hacer Alice?" que devuelve una lista de permisos en lugar de solo una respuesta de Permitir / Denegar.

    
respondido por el David Brossard 26.05.2015 - 13:46
fuente

Lea otras preguntas en las etiquetas