Identity & .NET 4.5 – II

En la anterior entrega hablamos sobre como Claims Identity / Principal pasaban a ser elementos fundamentales de .NET 4.5. Junto con esta entrada también vimos como los mecanismos de autorización legacy seguían funcionando, aunque ahora interpretando claims. Pues bien, a lo largo de esta entrada trataremos de hablar de dos elementos fundamentales en nuestros RP, ClaimsAuthenticationManager y ClaimsAuthorizationManager.

 

ClaimsAuthenticationManager

Tal y como se puede leer en la documentación de esta clase, la idea de esta pieza es la de poder dar soporte a la transformación, modificación y agregación de las claims obtenidas en el proceso de autenticación de un usuario. Un ejemplo podría ser en un sitio web con un carrito en el que querramos agregar a cualquier usuario autenticado alguna claim procedente de nuestro sistema y no del repositorio/pieza de autenticación. Su uso, como puede verse a continuación es tremendamente sencillo.

 


Si observa, lo único que hemos hecho es sobreescribir el método Authenticate, para, si el usuario está autenticado trabajar sobre la colección de Claims de la identidad obtenida por el método seleccionado. Para establecer esta implementación como el ClaimsAuthenticationManager por defecto solamente tendremos que agregar la siguiente sección de configuración dentro de nuestro programa.


Una vez establecida la configuración, tendremos que indicar que se utilize el sistema de transformación de claims, para ello, dependiendo  del tipo de aplicación lo haremos de forma diferente. Por ejemplo, para una aplicación de escritorio solamente tendríamos que cambiar el sitio en el que hagamos la asignación de nuestro principal al hilo de ejecución, incorporando el siguiente código:

 


 

En el caso de la web, es un poco diferente, sobre todo, porque generalmente no intervenimos en este proceso de asignación del principal al HttpContext. Para resolver esto, podemos crear un sencillo módulo Http que nos haga este trabajo, un código de ejemplo podría ser el siguiente:

 


 

Si observa, en lineas generales, con un poquito más de amor, hemos hecho el mismo trabajo que anteriormente, asignar al hilo ( y en el caso de la web al HttpContext ) el principal obtenido de la transformación. Por supuesto, una vez creado tenemos que registrar este módulo dentro de nuestro sitio, adicionalmente, también tenemos que hacer el registro del móduglo SessionAuthenticationModule, ahora veremos para que..

 


Bien, supongamos que ya hemos hecho todo el trabajo. Si navegamos un poco por el sitio, nos daremos cuenta de que el método Authenticate es llamado de forma continua, si, por ejemplo, hacemos lo que comentamos anteriormente de buscar en nuestro repositorio claims adicionales el impacto de rendimiento sería alto. Para evitarlo, podemos guardar en sesión este principal de tal forma que no sea ejecutado tan frecuentemente. Para ello, modificaremos nuestro ClaimsAuthenticationManager para incluir lo siguiente

 


 

Como podrá observar se hace uso del modulo SessionAuthenticationModule para emitir una cookie que será posteriormente utilizada para evitar el proceso de transformación de nuevo.

 

Bueno, hasta aquí llegaremos por hoy, espero que os esté resultando interesante..

 

Saludos

Unai

Un comentario en “Identity & .NET 4.5 – II”

Deja un comentario

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