Cuando una empresa desarrolla una aplicación para sus clientes, externos
a su organización, uno de los puntos claves es el desarrollo que permitirá el
acceso a esta aplicación. ¿Qué puntos se deben tener en cuenta?
·
Permitir
varios proveedores de identidad:
o
Registro.
o
Proveedores de
terceros: Twitter, Facebook, LinkedIn, etc.
·
Permitir
autenticación multi factor.
·
Restablecimiento
de contraseña.
·
Posibilidad de
implementar políticas según los casos.
·
SSO entre
diferentes.
Para poder dar salida
a todos estos requerimientos tenemos dos opciones:
·
Implementamos
el servicio de identidad: ya sea uno custom, con identity server…
·
Utilizamos un
servicio ya implementado y preparado para ello.
En mi caso, a los clientes, es la segunda opción la que les aconsejo, y
además les aconsejo utilizar Azure AD B2C. El objetivo de este artículo es explicar un
que es Azure AD B2C, que podemos hacer con él y de esta forma entender porque
utilizarlo.
Pilares de Azure AD B2C
Los pilares sobre los
que se basa Azure AD B2C son cinco:
·
Cuentas
locales y sociales.
·
Autenticación
Multi-Factor.
· Políticas de: sign up, sign in, sign up o sign in,
password reset y profile editing.
·
Customización
de la experiencia de usuario: Pantalla login, registro, edición perfil usuario
y reseteo de password.
·
Fácil
integración en el desarrollo de aplicaciones que utilicen Azure AD B2C.
Cuentas locales y sociales
Si queremos dar un buen servicio a nuestros usuarios, una de las
opciones que debemos darle es que pueda realizar el login en nuestra aplicación
mediante alguna de sus cuentas de redes sociales que ya utilicé. Hay muchos
usuarios que prefieren utilizar una única identidad en todas las aplicaciones
para no tener infinitas cuentas, otros utilizar varias y otros que prefieren
tener una por sistema.
Resumiendo, Azure AD B2C brinda a los usuarios finales la posibilidad de elegir
entre:
·
"Traer su
propia identidad" (BYOI) mediante el uso de una de sus cuentas sociales como
Amazon, Facebook, Google+, LinkedIn, cuenta de Microsoft (MSA), etc.
·
Crear una nueva cuenta local (dirección de
correo electrónico arbitraria).
Por defecto cuando creas una cuenta de Azure AD B2C solo tienes la
opción de crear cuentas locales:
Para dar la opción de poder interactuar con cuentas externas, hay que
darle a la opción Add y activar el proveedor deseado. Actualmente las opciones son: Microsoft Account, Google, Faebook,
LinkdIn, Amazon, Weibo (Preview), QQ (Preview), WeChat (Preview), Twitter
(Preview), GitHub (Preview).
Para cada una de ellas deberás introducir el ClientId y el ClientSecret
obtenido de la plataforma de origen. Una vez habilitadas a nivel de Tenant,
cuando creemos o editamos una política podremos seleccionar que tipo de cuenta
se requiere para esa política concreta.
Autenticación Multi-Factor
Azure AD B2C permite una segunda capa de seguridad a la hora de
registrarse o logarse. Actualmente esta segunda capa solo se puede hacer
mediante llamadas de teléfono y mensajes de texto. La autenticación
Multi-Factor se activa o desactiva cuando se crea o edita una política. La
razón por la que se hace a nivel de políticas es porque de esta forma se puede
administrar el Multi-Factor por aplicación, no todas nuestras aplicaciones
tienen porque realizar Multi-Factor, o incluso a nivel de partes concretas de
una aplicación.
Políticas
Las políticas son la parte más importante de Azure AD B2C. En ellas se
definen cuál será la experiencia del usuario cuando inicie una sesión, edite su
perfil, se registre en la aplicación o cambié su contraseña. Cuando creamos una
política, está nos permite configurar los siguientes puntos:
·
Tipo de cuenta
que se puede usar para el registro: local o alguna de terceros permitida
(Facebook, Twitter…).
·
Atributos que
son necesarios para identificar a los clientes: Nombre, dirección, teléfono.
·
Uso de
autenticación Multi-Factor.
·
URL de la
página customizada.
·
Claims: La
información que se añadirán a los claims cuando el usuario esté logado.
¿Y cómo Azure B2C sabe que política aplicar en cada momento? Cuando se
hace la llamada https uno de los campos que se deben enviar es la política a
aplicar. Por ejemplo, si tuviéramos una policita de Sign-in con el nombre de
siginpolice la llamada https de login de usuario sería:
https://login.microsoftonline.com/contosob2c.onmicrosoft.com/oauth2/v2.0/authorize?client_id={El
id de tu aplicación registrada}&redirect_uri={url registrada de respuesta}&response_mode=form_post&response_type=id_token&scope=openid&nonce=dummy&&p=siginpolice(que
es nuestra política definida)
Se pueden definir las siguientes políticas:
·
Sign-up or
Sign-in à Política que nos sirve tanto para cuando un usuario haga
login como si se registra.
Los campos que
rellenar son:
o
Proveedor de
identidad à las opciones que se nos mostrarán serán aquellas que
habremos definido con anterioridad a nivel de servicio.
o
Los atributos à Campos que queremos que se muestren en el formulario,
las opciones que se nos mostrarán son todos los que hay por defecto más
aquellos que hayamos creado de forma custom.
o
Claims à Una vez el usuario se haya logado que atributos
queremos que aparezcan en los claims.
o
Autenticación
multifacotr à Si queremos activar la autenticación multifactor o
no.
o
Page UI Custom
à Si queremos utilizar una página customizada, la URL
de la página cusmtomizada que será la que aparezca tanto en el login como en el
registro.
·
Profile editing
à Nos servirá para configurar la experiencia que tendrá
el usuario cuando edite su perfil.
Los campos a
rellenar son los mismos que en la política anterior, excepto que no existe la
opción de autenticación multifactor porque no es una política de autenticación.
·
Password reset
à Nos servirá para configurar la experiencia que tendrá
el usuario cuando quiera hacer el reset de su password.
Como se puede ver en
la imagen anterior se pueden configurar todos los campos de Signin-Signup excepto
la configuración de los atributos a mostrar, en este caso son por defecto.
·
Sign-Up à Nos servirá para configurar la experiencia que tendrá
el usuario cuando quiera registrarse en la aplicación.
Los campos que se
mostrarán para ser configurados son los mismos que en Sign-up or Sign-in
·
Sign-In à Nos servirá para configurar la experiencia que tendrá
el usuario cuando quiera hace el login en la aplicación.
Como podemos observar
los campos son los mismos excepto que en este caso no tiene sentido que podamos
configurar los atributos que saldrán en pantalla.
·
Resource Owner
Policies à Esta política nos permitirá definir los claims que
queremos devolver cuando se ejecutar cuando se esté ejecutando el Flow de resource owner password credentials
(ROPC).
A continuación, vamos a ver un ejemplo de customización Sign-Up y
Sign-In. En la siguiente imagen se puede ver el resumen de la configuración:
Para finalizar vamos a
ver cómo sería el flujo en una aplicación:
1.
El usuario
realiza un Sign-up en la aplicación, y es redireccionado al proveedor de
identidad configurado, en este caso Facebook. Si la autenticación tiene éxito,
se cachea el token recibió y se continua con el segundo paso de autenticación
como sea definido en la política.
2.
Una vez el
usuario ha finalizado el ciclo de la doble autenticación, el orquestador inicia
el proceso de registro donde el usuario verifica la información.
Como podemos ver Azure AD B2C es una opción muy a tener en cuenta ya que
nos da una gran variedad de opciones para que nuestros clientes puedan usar
nuestras aplicaciones.
Más información en: https://docs.microsoft.com/es-es/azure/active-directory-b2c/
Robert Bermejo
Cloud Specialist Consultant en
TOKIOTA | Microsoft Azure MVP
bermejoblasco@live.com
@robertbemejo
www.robertbermejo.com