Saltar a contenido

Custom Policy

Experiencias de identidad: flujos de usuario o directivas personalizadas.

En Azure AD B2C, puede definir la lógica de negocios que siguen los usuarios para obtener acceso a su aplicación. Por ejemplo, puede determinar la secuencia de pasos que siguen los usuarios cuando inician sesión, se registran, editan un perfil o restablecen una contraseña. Después de completar la secuencia, el usuario adquiere un token y obtiene acceso a la aplicación.

En Azure AD B2C, hay dos formas de ofrecer experiencias de usuario relacionadas con la identidad:

  1. Los flujos de usuario son directivas configurables, predefinidas e integradas que se proporcionan para que pueda crear experiencias de registro, inicio de sesión y edición de directivas en cuestión de minutos.

  2. Las directivas personalizadas le permiten crear sus propios recorridos de usuario para escenarios complejos de experiencia de identidad.

Azure b2c

User Flow

Para configurar las tareas de identidad más comunes, Azure Portal incluye varias directivas predefinidas y configurables, denominadas flujos de usuario.

Puede configurar valores de flujo de usuario como estos para controlar los comportamientos de la experiencia de identidad en las aplicaciones:

  • Los tipos de cuenta usados para el inicio de sesión, como cuentas de redes sociales (por ejemplo, Facebook), o cuentas locales que usan una dirección de correo electrónico y una contraseña para el inicio de sesión.
  • Los atributos que se recopilan del consumidor, como el nombre, el código postal o el país o región de residencia.
  • Azure AD Multi-Factor Authentication (MFA)
  • Personalización de la interfaz de usuario
  • El conjunto de notificaciones en un token que recibe la aplicación después de que el usuario completa el flujo de usuario.
  • Administración de sesiones
  • Y mucho más…

En la práctica, la mayoría de los escenarios de identidad comunes para apps se pueden definir e implementar mediante flujos de usuario. Se recomienda usar los flujos de usuario integrados, a menos que tenga escenarios complejos de recorrido del usuario que requieran toda la flexibilidad de las directivas personalizadas.

Custom Policy

Las directivas personalizadas son archivos de configuración que definen el comportamiento de la experiencia de usuario del inquilino de Azure AD B2C. Mientras que en el portal de Azure AD B2C se predefinen flujos de usuario para las tareas de identidad más comunes, un desarrollador de identidad puede editar las directivas personalizadas en su totalidad a fin de realizar muchas tareas diferentes.

Una directiva personalizada es totalmente configurable y se controla mediante directivas. Orquesta la confianza entre entidades en protocolos estándar. Por ejemplo, OpenID Connect, OAuth, SAML y otros no estándar, como intercambios de notificaciones de sistema a sistema basados en la API de REST. El marco crea experiencias propias fáciles de usar.

Las directivas personalizadas le ofrecen la posibilidad de crear recorridos de usuario con cualquier combinación de pasos. Por ejemplo:

  • Federación con otros proveedores de identidades
  • Desafíos de autenticación multifactor (MFA) propios y de terceros
  • Recopilación de cualquier dato proporcionado por el usuario
  • Integración con sistemas externos mediante la comunicación de la API REST

Cada recorrido del usuario se define mediante una directiva, y puede crear tantas como sea necesario con el fin de posibilitar la mejor experiencia de usuario para su organización.

Azure b2c

Una directiva personalizada se define mediante varios archivos XML que se hacen referencia entre sí en una cadena jerárquica. Los elementos XML definen el esquema de notificaciones, las transformaciones de notificaciones, las definiciones de contenido, los proveedores de notificaciones, los perfiles técnicos, los pasos de orquestación del recorrido del usuario y otros aspectos de la experiencia de identidad.

La gran flexibilidad de las directivas personalizadas es principalmente adecuada cuando es necesario crear escenarios de identidad complejos. Los desarrolladores que configuran las directivas personalizadas deben definir las relaciones de confianza con mucho detalle para incluir puntos de conexión de metadatos, definiciones exactas de intercambio de notificaciones, además de configurar secretos, claves y certificados según lo necesite cada proveedor de identidades.

Más info sobre las directivas personalizada

Andreani Custom Policy

La empresa utiliza para su autenticación la estrategia de Custom Policy.

Las Custom Policy agregan la funcionalidad de buscar datos de autorización a una base de datos de la empresa.

Customs Policies

Se crearon los siguientes flujos.

nombre descripcion test
B2C_1A_SIGNUP_SIGNIN Flujo de inicio de sesión y registro de usuario aquí
B2C_1A_SIGNUP_SIGNINAAD Flujo de inicio de sesión y registro de usuario con la opción de acceder con azure AD aquí
B2C_1A_SIGNUP_SIGNIN_REFRESH Flujo de inicio de sesión y registro de usuario con refresco de token infinito. aquí
B2C_1A_PROFILEEDIT Flujo de edición de perfil aquí
B2C_1A_PASSWORDRESET Flujo cambio de contraseña aquí

Validation API

Es un microservicio desarrollado por el Partner Prisma y mantenido por el equipo de Arquitectura.

El microservicio tiene la responsabilidad de agregar información custom a un usuario para una aplicación.

El microservicio permite administrar los usuarios, permitiendo consultar, crear, actualizar y modificar los usuarios de una aplicación predeterminada.

Diagrama de authenticación:

Azure b2c

Diagrama de administración:

Azure b2c

JSON Web Token

El JWT customizado tiene el siguente payload

{
  "exp": 1643235428,
  "nbf": 1643228228,
  "ver": "1.0",
  "iss": "https://andreanib2cdev.b2clogin.com/226a3c28-81b4-4606-9a63-040f553bb647/v2.0/",
  "sub": "40e69d7e-447c-45e9-9002-1c7e6e2eda10",
  "aud": "9ce7bb2b-eb08-4743-ac9a-7959080e37f5",
  "nonce": "defaultNonce",
  "iat": 1643228228,
  "auth_time": 1643228228,
  "tid": "2815c130-391b-4383-8743-e3413f343e08",
  "given_name": "Olivera",
  "family_name": "Lucas",
  "name": "Olivera Lucas",
  "email": "{Claim:signInNames.emailAddress}",
  "signInNames.emailAddress": "lolivera@andreani.com",
  "raw": "{\r\n  \"rol\": \"admin\",\r\n  \"permissions\": [\r\n    \"read\",\r\n    \"write\",\r\n    \"admin\"\r\n  ]\r\n}"
}

Podemos ver en el campo raw la información extra almacenada en la base de datos mongo.

{

    "raw": "{\r\n  \"rol\": \"admin\",\r\n  \"permissions\": [\r\n    \"read\",\r\n    \"write\",\r\n    \"admin\"\r\n  ]\r\n}"
}
lo que serializada sería

{
    "rol": "admin",
    "permissions": [
        "read",
        "write",
        "admin"
    ]
}