Identity & .NET 4.5 – III

En la anterior entrega de esta serie vimos como extender el mecanismo de claims para hacer uso de un ClaimsAuthenticationManager, gracias al cual, podríamos modificar, agregar o eliminar claims de la identidad con la que se authenticara un usuario. Vimos además, como dependiendo del tipo de cliente el uso de esta pieza es diferente. A lo largo de esta entrega, veremos otro de los elementos fundamentales de la plataforma de identidad representado por la clase ClaimsAuthorizationManager, pieza que tal como se puede entender por su nombre se encarga de realizar autorización de credenciales. La autorización de credenciales nos permite restringir el acceso a un recurso dado, tanto de forma declarativa como imperativa gracias a ClaimsPrincipalPermission y ClaimsPrincipalPermissionAttribute.

 

ClaimsAuthorizationManager

Como lo primero es lo primero empezaremos por crear y configurar un ClaimsAuthorizationManager simple, para ello, como hacíamos en la entrada anterior solamente tenemos que crear nuestra implementación y registrarla dentro de la sección de configuración del sistema de identidad nuevo System.identityModel.

 


 


 

Una vez registrado nuestra implementación y configurada, ya podremos revisar su funcionamiento, para ello, podemos simplemente hacer uso de ClaimsPrincipalPermissionAttribute como se ve a continuación.

 


Si se fija, el código es idéntico al usado en versiones anteriores del framework con PrincipalPermission, si acaso, la diferencia está en que ahora no hablamos de usuarios/roles sino recursos y operaciones. Pues bien, antes de cualquier llamada a este método se proceder´´a a verificar el acceso de la identidad actual en el método CheckAccess, el cual tomará como parámetro un contexto con la información de la identidad actual y el[los] recurso[s] y operación[es] que se quieren autorizar.

 

En un entorno web, como MVC tenemos la pega de que el atributo Authorize no está preparado para trabajar con claims, aún sigue pidiendo usuario / roles, sin embargo, no tardaríamos mucho en realizar una implementación que se adaptara a nuestro gusto y necesidades. Mientras tanto, lógicamente podemos solicitar la autorización de forma imperativa como se ve en esta trivial acción de un controlador.

 


 

 

Nota: Revisando un poco las implementaciones he visto una implementación  de un atributo de autorización basado en claims para MVC de Dominick Baier que prodría utilizarse sin problemas,  el ejemplo y la descarga pueden obtenerse desde aquí.

 

Aunque ha sido corta, espero que esta entrada os haya resultado de vuestro agrado

 

Un saludo

Unai

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *