IdentityModel.Extensions

Estos últimos posts los he dedicado a un tema que muchos sabéis que me gusta, la seguridad de nuestras aplicaciones empresariales. Después de hablar sobre la nueva herramienta Identity & Access Tool me di cuenta de que el proceso de trabajo con la simulación de un STS Local no era tan sencillo como nos podría parecer, puesto que, en un escenario normal, los desarrolladores necesitaríamos de distintos perfiles para nuestras pruebas, no todo lo vamos a poder probar con el mismo conjunto de claims, o por lo menos no es lo habitual. Por supuesto, muchos me diréis que la herramienta mostrada nos permite modificar cuales son las claims que el STS simulado nos tiene que devolver pero, esto es un trabajo muy manual. Además, trabajando en equipo no hay una forma de compartir los distintos perfiles que podamos tener entre todos. Por todo ello, me decidí a ir sacando minutillos de mi trabajo para intentar dar una posible solución, la más simple que podamos, pero que sea efectiva. A continuación os contaré los resultados, resultados que todos los que estéis interesados podréis aprovechar.

 

Escarbando en la herramientaimg1

Lógicamente lo primero es mirar como funciona la herramienta y el trabajo de nuestro LocalSTS, para ver que podemos hacer en la tarea que nos ocupa. Tras unos sencillos pasos nos damos cuenta de que el proceso LocalSTS.exe que se levanta al depurar una aplicación que haga uso de esta herramienta lo hace partiendo de una configuración que se incluye en nuestro proyecto de visual studio 2012 mediante el fichero LocalSTS.exe.config, archivo que no se incluye como archivo del proyecto pero que podemos mostrar fácilmente desde nuestro explorador de soluciones, tal y como podemos ver en la siguiente imagen.

En este archivo, encontramos toda la configuración seleccionada en la herramienta de gestión de identidad, desde el certificado a usar hasta lo que nos preocupa a nosotros que es las claims que el STS local nos tiene que proporcionar y que podemos ver en el siguiente fragmento XML.

 

 

 

 

 

 

 

Bueno, ya está, la solución parece bien fácil. Lo único que tenemos que hacer es tener distintos archivos con claims y cambiar en este XML el elemento claims por el que nos interese en cada prueba y ya tendremos nuestro objetivo. Ahora, la pregunta es ver como lo vamos a hacer, intentando que para el desarrollador sea una tarea sencilla y en la que no tenga que cambiar el contexto de su herramienta de trabajo, Visual Studio.

 

 

 

La implementación

Después de distintas vueltas parece que la solución más sencilla y más cómoda para el desarrollador es la de proporcionar algún comando para nuestra consola de NuGet, de tal forma, que al igual que con otros paquetes, podamos ejecutar algún comando de Power Shell que nos facilite la tarea. Por ello, nos ponemos manos a la obra y escribimos el siguiente paquete de NuGet, el cual solamente contiene un módulo de funciones de Power Shell a utilizar en la ventana de comandos.

 

git clone git@github.com:unaizorrilla/IdentityModel.Extensions.git

 

 

El ejemplo

 

Bueno, como las cosas siempre se ven mejor con un ejemplo lo que haremos es ver el uso de este paquete en una aplicación web MVC 4. Puesto que a estas alturas el paquete aún no está disponible en NuGet.org lo que haremos es instalarlo mediante un repositorio local.

 

image

Una vez instalado, podemos ejecutar get-help identitymodelextensions para ver los distintos comandos, nombrados anteriormente. Las tareas básicas son las siguientes:

 

  • Creación de un nuevo perfil: Una vez que tengamos creado mediante nuestra herramienta Identity & Access la configuración de claims para un caso dado, lo que haremos es guardar esta configuración con un nuevo perfil, para ello, ejecutarmos el siguiente comando. save-currentlocalstsprofile –profilename nombreperfil. Con este sencillo paso ya habremos guardado nuestra configuración y podremos seguir trabajando con la herramienta en la generación de nuevos perfiles.

 

  • Visualización de perfiles: Para ver los distintos perfiles almacenados en el proyecto solamente tenemos que ejecutar el comando get-localstsprofiles, el cual, como vemos a continuación nos enseña los distintos perfiles almacenados.

image

 

 

  • Estableciendo el perfile actual: Ahora que ya sabemos como crear y enseñar perfiles solamente nos queda establecer el perfil ( colección de claims ) a utilizar. Para ello, tenemos el último de los comandos de nuestro paquete que es set-localstsprofile –profilename nombreperfil

Bueno, hasta aquí hemos llegado, espero que realmente os resulte interesante y, si no es así, por lo menos que os pueda servir para aprender algo nuevo…

 

Un saludo

Unai

Deja un comentario

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