Este post es parte de una serie de artículos complementarios a la VAN sobre Identity Providers.
Escenario
A continuación veremos el flujo de request que ocurren en el browser cuando ingresamos a nuestro sitio web después de implementar la seguridad con ADFS, pero antes voy a hacer un cuadro con los actores que intervienen en este ejemplo.
Actores
testigoadfs.neluz.int | Es nuestra aplicación web, en la cual queremos delegar la autenticación y autorización a ADFS. |
testigomvc.neluz.int | Es otra aplicación que utiliza ADFS, en este caso para ejemplificar el single sign on. |
adfs.neluz.int | Es el sitio web de ADFS, que cumple el rol de emisor de confianza (Issuer). |
starter-sts.neluz.int | Es el Identity Provider, encargado de autenticar al usuario mediante credenciales (usuario y password). |
Flujo del primer ingreso
De nuestro sitio web a la pantalla de login
Cuando ingresamos al sitio web testigoadfs.neluz.int sucede lo siguiente:
El HttpModule de WIF redirecciona a adfs.neluz.int (Issuer) ya que no encuentra la información emitida por ADFS que autorice el ingreso al sitio. Este, a su vez redirecciona a issue.aspx de starter-sts.neluz.int (el IP-STS) ya que no encuentra información de autenticación. Issue.aspx no tiene información de que el usuario esté autenticado (Single Sign On) por lo que redirecciona a login.aspx dentro de starter-sts para que el usuario ingrese su username y password.
De la pantalla de login a nuestro sitio web
Luego de ingresar las credenciales correctamente, sucede lo siguiente:
Hacemos un post en login.aspx de starter-sts el cual valida el usuario y password ingresados y, como en este caso son válidos, redirecciona a issue.aspx, es decir que empieza a “desandar” el camino. Luego issue.aspx emite la información correspondiente a la autenticación para ADFS y hace un POST a este donde se genera la información de autorización para el módulo de WIF en nuestra aplicación que la recibe en el POST de nuestro sitio y ahora si podemos ingresar (es decir que el httpModule de WIF nos deja pasar).
Flujo visto como un diagrama de secuencia
Navegando a otra página dentro del mismo sitio
Cuando intentamos acceder a otra página de nuestro sitio web vemos lo siguiente
Vemos que no ocurre nada de los anterior, porque el HttpModule de WIF encuentra la información correspondiente a la autorización emitida por ADFS y directamente nos deja pasar.
Contenido del mensaje emitido por ADFS
Segunda aplicación (SSO)
Cuando ingresamos a otra aplicación que delega la autenticación y autorización a ADFS vemos lo siguiente:
Como podemos observar se repite el camino casi como el primer ingreso, es decir, WIF no encuentra la información de autorización para ingresar a la aplicación y redirecciona a adfs.neluz.int, este a issue.aspx de starter-sts pero, a diferencia del primer ingreso, este si encuentra que el usuario está autenticado por lo que directamente emite la información de autenticación necesaria para ADFS. Ahora si ADFS encuentra la información y realiza la autorización para ingresar a la aplicación, finalmente WIF nos deja pasar. En este caso no tuvo que intervenir el usuario, a lo sumo notó algún cambio en las url del browser.