Esta pregunta es sobre la autorización basada en reclamaciones y Windows Identity Foundation (desafortunadamente, no tengo el privilegio de crear una etiqueta para esto).
Considere el siguiente caso de uso simple:
- Tengo un usuario de clase y un proyecto de clase,
- (por simplicidad) cada proyecto tiene exactamente un usuario asignado,
- La política de control de acceso es que
Un usuario solo puede leer datos de proyectos a los que está asignado.
Estoy intentando modelar esto utilizando WIF y Autorización basada en reclamaciones.
Por lo tanto, tengo el siguiente método para el cual quiero verificar el acceso:
public Project ReadProject(int id)
Para hacer esto, tendría que hacer una llamada a la ClaimsAuthorizationManager con un AuthorizationContext que contiene el principal (= el usuario) y las Reclamaciones de los recursos a los que desea acceder y las acciones que desea realizar en estos recursos.
Lo que no tengo claro:
En el caso de uso anterior, el permiso se basa en el hecho project.AssignedUserID == user.ID
. ¿Cómo serían las reclamaciones?
- ¿Este requisito es un reclamo para el usuario / director, como "El usuario tiene acceso a la ID del proyecto X", que debo configurar antes de llamar al Administrador de autorizaciones de reclamaciones? En caso afirmativo, ¿en qué momento asignaría esa reclamación al usuario? ¿Y eso no arruinaría todo el punto de tener un lugar centralizado para declarar y verificar políticas?
- ¿Es más bien algo que el Administrador de Autorizaciones de Reclamaciones verificará al buscar la base de datos? Si es así, ¿cómo traduciría el hecho a qué proyecto quiere acceder en un Reclamo?
La mayoría de los ejemplos que encuentro para CBA se basan en los atributos del usuario (por ejemplo, de qué país es), por lo que no tengo idea de cómo realizar verificaciones en la relación de datos de usuario.