Cambios en el acceso a mi sitio web al implementar Autenticación y Autorización por ADFS

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:

flow-adfs-1

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:

flow-adfs-2

flow-adfs-3a

flow-adfs-3

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

flow-sequence-1 y 2

Navegando a otra página dentro del mismo sitio

Cuando intentamos acceder a otra página de nuestro sitio web vemos lo siguiente

flow-adfs-6

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

flow-adfs-claims

Segunda aplicación (SSO)

Cuando ingresamos a otra aplicación que delega la autenticación y autorización a ADFS vemos lo siguiente:

adfs-flow-4

flow-adfs-5

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.

Flujo visto como un diagrama de secuencia

flow-sequence-3

Seguir leyendo otros artículos de la serie

No hay comentarios.:

Publicar un comentario