Tutorial para configurar Azure Active Directory B2C con Strata

En este tutorial, aprenderá a integrar Azure Active Directory B2C (Azure AD B2C) con Strata Maverics Identity Orchestrator, que ayuda a proteger las aplicaciones locales. Se conecta a los sistema de identidades, migra usuarios y credenciales, sincroniza directivas y configuraciones y abstrae la autenticación y la administración de sesiones. Use Strata para pasar de un sistema heredado a Azure AD B2C sin necesidad de volver a escribir las aplicaciones.

La solución tiene las siguientes ventajas:

  • Inicio de sesión único (SSO) del cliente en las aplicaciones híbridas locales: Azure AD B2C admite el inicio de sesión único de cliente con Maverics Identity Orchestrator
    • Los usuarios inician sesión con sus cuentas hospedadas en Azure AD B2C o en el proveedor de identidades (IdP)
    • Maverics muestra el inicio de sesión único a las aplicaciones que históricamente se han protegido mediante sistemas de identidad heredados, como Symantec SiteMinder.
  • Extensión del inicio de sesión único de estándares a aplicaciones: use Azure AD B2C para administrar el acceso de usuario y habilitar el inicio de sesión único con conectores de Maverics Identity Orchestrator Security Assertion Markup Language (SAML) o OpenID Connect (OIDC)
  • Configuración sencilla: conexión de conectores SAML o OIDC de Maverics Identity Orchestrator a Azure AD B2C

Requisitos previos

Para empezar, necesitará lo siguiente:

  • Un inquilino de Azure AD B2C vinculado a la suscripción de Azure
  • Una instancia de Azure Key Vault para almacenar secretos que utiliza Maverics Identity Orchestrator. Conecta con Azure AD B2C u otros proveedores de atributos, como un directorio o una base de datos de protocolo ligero de acceso a directorios (LDAP).
  • Una instancia de Maverics Identity Orchestrator en ejecución en una máquina virtual (VM) de Azure o en un servidor local. Para obtener software y documentación, vaya a strata.io Contacto con Strata Identity.
  • Una aplicación local para realizar la transición a Azure AD B2C

Descripción del escenario

La integración Maverics Identity Orchestrator incluye los siguientes componentes:

  • Azure AD B2C: el servidor de autorización que comprueba las credenciales del usuario.
    • Los usuarios autenticados acceden a aplicaciones locales mediante una cuenta local del directorio de Azure AD B2C.
  • Proveedor de identidades de empresa o social externo (IdP): proveedor de OIDC, Facebook, Google o GitHub
  • Maverics Identity Orchestrator de Strata: el servicio de inicio de sesión del usuario que pasa la identidad a las aplicaciones a través de encabezados HTTP.

En el siguiente diagrama de arquitectura se muestra la implementación.

Diagrama de la arquitectura de integración de Azure AD B2C, con Maverics Identity Orchestrator, para acceder a aplicaciones híbridas.

  1. El usuario solicita acceder a la aplicación hospedada en el entorno local. Maverics Identity Orchestrator redirige mediante proxy la solicitud a la aplicación.
  2. Orchestrator comprueba el estado de autenticación del usuario. Si no hay token de sesión o este no es válido, el usuario va a Azure AD B2C para autenticarse.
  3. Azure AD B2C envía la solicitud de autenticación al proveedor de identidades de redes sociales configuradas.
  4. El proveedor de identidades desafía al usuario para pedir sus credenciales. Podría requerir una autenticación multifactor (MFA).
  5. El proveedor de identidades devuelve la respuesta de autenticación a Azure AD B2C. El usuario puede crear una cuenta local en el directorio de Azure AD B2C.
  6. Azure AD B2C envía la solicitud del usuario al punto de conexión especificado durante el registro de la aplicación Orchestrator en el inquilino de Azure AD B2C.
  7. Orchestrator evalúa las directivas de acceso y los valores de atributo para los encabezados HTTP reenviados a la aplicación. Orchestrator puede llamar a otros proveedores de atributos para recuperar información para establecer los valores de encabezado. Orchestrator envía la solicitud a la app.
  8. El usuario se autentica y tiene acceso a la aplicación.

Maverics Identity Orchestrator

Para obtener software y documentación, vaya a strata.io Contacto con Strata Identity. Determine los requisitos previos de Orchestrator. Instale y configure.

Configuración del inquilino de Azure AD B2C

Durante las instrucciones siguientes, documente:

  • Nombre e identificador del inquilino
  • Id. de cliente
  • Secreto del cliente
  • Notificaciones configuradas
  • URI de redireccionamiento
  1. Registro de una aplicación en Azure Active Directory B2C para inquilino de Azure AD B2C.
  2. Conceda a Microsoft MS Graph API los permisos para sus aplicaciones. Permisos de uso: offline_access, openid.
  3. Agregue un URI de redirección que coincida con el oauthRedirectURL parámetro de la configuración del conector de Azure AD B2C de Orchestrator, por ejemplo, https://example.com/oidc-endpoint.
  4. Cree flujos de usuario y directivas personalizadas en Azure Active Directory B2C.
  5. Incorporación de un proveedor de identidades en su inquilino de Azure Active Directory B2C. Inicie sesión del usuario con una cuenta local, una social o una empresa.
  6. defina los atributos que se recopilarán durante el registro.
  7. especifique los atributos que se devolverán a la aplicación a través de la instancia de Orchestrator.

Nota:

Orchestrator consume atributos de las notificaciones devueltas por Azure AD B2C y puede recuperar atributos de sistemas de identidades conectados, como los directorios y las bases de datos LDAP. Esos atributos se encuentran en encabezados HTTP y se envían a la aplicación local de nivel superior.

Configuración de Maverics Identity Orchestrator

Siga las instrucciones de las secciones siguientes para configurar una instancia de Orchestrator.

Requisitos del servidor de Maverics Identity Orchestrator

Puede ejecutar la instancia de Orchestrator en cualquier servidor, ya sea de manera local o en una infraestructura de nube pública de un proveedor como Azure, AWS o GCP.

  • Sistema operativo: REHL 7.7 o superior, CentOS 7+
  • Disco: 10 GB (pequeño)
  • Memoria: 16 GB
  • Puertos: 22 (SSH/SCP), 443, 80
  • Acceso raíz: Para tareas administrativas o de instalación
  • Maverics Identity Orchestrator: Se ejecuta como el usuario maverics en systemd
  • Salida de red: Desde el servidor que hospeda a Maverics Identity Orchestrator con la capacidad de comunicarse con su inquilino de Microsoft Entra.

Instalación de Maverics Identity Orchestrator

  1. Obtenga el paquete RPM de Maverics más reciente.

  2. Coloque el paquete en el sistema en el que quiera instalar Maverics. Si va a copiar en un host remoto, use SSH scp.

  3. Ejecute el comando siguiente. Use su nombre de archivo para reemplazar maverics.rpm.

    sudo rpm -Uvf maverics.rpm

    De forma predeterminada, Maverics se instala en el directorio /usr/local/bin.

  4. Maverics se ejecuta como servicio de systemd.

  5. Utilice el siguiente comando para comprobar que el servicio de Maverics se está ejecutando:

    sudo service maverics status

  6. Aparece el siguiente mensaje (o similar).

Redirecting to /bin/systemctl status maverics.service
  maverics.service - Maverics
  Loaded: loaded (/etc/systemd/system/maverics.service; enabled; vendor preset: disabled)
  Active: active (running) since Thu 2020-08-13 16:48:01 UTC; 24h ago
  Main PID: 330772 (maverics)
  Tasks: 5 (limit: 11389)
  Memory: 14.0M
  CGroup: /system.slice/maverics.service
          └─330772 /usr/local/bin/maverics --config /etc/maverics/maverics.yaml

Nota

Si Maverics no se inicia, ejecute el siguiente comando:

journalctl --unit=maverics.service --reverse

La entrada de registro más reciente aparece en la salida.

  1. El archivo predeterminado maverics.yaml se crea en el /etc/maverics directorio.
  2. Configure Orchestrator para proteger la aplicación.
  3. Integración con Azure AD B2C y almacenamiento.
  4. Recupere los secretos de Azure Key Vault.
  5. Defina la ubicación desde la que Orchestrator lee su configuración.

Especificación de configuraciones mediante variables de entorno

Configure las instancias de Orchestrator con variables de entorno.

MAVERICS_CONFIG

Esta variable de entorno informa a la instancia de Orchestrator de qué archivos de configuración YAML debe usar y dónde encontrarlos durante el inicio o el reinicio. Establezca la variable de entorno en /etc/maverics/maverics.env.

Creación de la configuración de TLS de Orchestrator

El campo tls del archivo maverics.yaml declara las configuraciones de seguridad de la capa de transporte que utiliza su instancia de Orchestrator. Los conectores usan los objetos TLS y el servidor de Orchestrator.

La clave maverics está reservada para el servidor de Orchestrator. Use las otras claves para inyectar un objeto TLS en un conector.

tls:
  maverics:
    certFile: /etc/maverics/maverics.cert
    keyFile: /etc/maverics/maverics.key

Configuración del conector de Azure AD B2C

Las instancias de Orchestrator utilizan conectores para integrarse con proveedores de atributos y autenticación. App Gateway para Orchestrator usa el conector de Azure AD B2C como proveedor de atributos y autenticación. Azure AD B2C usa el proveedor de identidades de redes sociales para la autenticación y, a continuación, proporciona atributos para la instancia de Orchestrator, pasándolos en las notificaciones configuradas en encabezados HTTP.

La configuración del conector corresponde a la aplicación registrada en el inquilino de Azure AD B2C.

  1. Desde la configuración de la aplicación, copie el id. de cliente, el secreto y el URI de redirección a su inquilino.
  2. Escriba un nombre del conector (por ejemplo, azureADB2C).
  3. Establezca el conector type en azure.
  4. Haga una nota con el nombre del conector. Usará este valor en otros parámetros de configuración.
  5. Establecer authType en oidc.
  6. Para el parámetro oauthClientID, establezca el id. de cliente que copió.
  7. Para el parámetro oauthClientSecret, establezca el secreto de cliente que copió.
  8. Para el parámetro oauthRedirectURL, establezca el URI de redireccionamiento que copió.
  9. El conector OIDC de Azure AD B2C usa el punto de conexión de OIDC para detectar metadatos, incluidas las direcciones URL y las claves de firma. Para el punto de conexión del inquilino, use oidcWellKnownURL.
connectors:
  name: azureADB2C
  type: azure
  oidcWellKnownURL: https://<tenant name>.b2clogin.com/<tenant name>.onmicrosoft.com/B2C_1_login/v2.0/.well-known/openid-configuration
  oauthRedirectURL: https://example.com/oidc-endpoint
  oauthClientID: <azureADB2CClientID>
  oauthClientSecret: <azureADB2CClientSecret>
  authType: oidc

Definición de Azure AD B2C como proveedor de autenticación

Un proveedor de autenticación determina la autenticación para los usuarios que no presentan una sesión válida durante una solicitud de recursos de aplicación. La configuración del inquilino de Azure AD B2C determina cómo se solicitan a los usuarios las credenciales, aunque se aplica otras directivas de autenticación. Por ejemplo, que se solicite una segunda fase para completar la autenticación y decidir qué devuelve a la instancia de App Gateway de Orchestrator después de la autenticación.

El valor de authProvider debe coincidir con el valor de name de su conector.

authProvider: azureADB2C

Protección de aplicaciones locales con una instancia de App Gateway de Orchestrator

La configuración de App Gateway de Orchestrator declara cómo Azure AD B2C protege la aplicación y cómo los usuarios acceden a la aplicación.

  1. Escriba un nombre de puerta de enlace de aplicaciones.
  2. Establezca location. En el ejemplo se usa la raíz de la aplicación /.
  3. Defina la aplicación protegida en upstream. Use la convención host:port: https://example.com:8080.
  4. Establezca los valores para las páginas de error y no autorizadas.
  5. Defina los nombres de los encabezados HTTP y los valores de atributo de la aplicación para establecer la autenticación y el control. Normalmente, los nombres de encabezado corresponden a la configuración de la aplicación. El conector convierte los valores de atributo en espacios de nombres. En el ejemplo, los valores devueltos de Azure AD B2C tienen como prefijo el nombre del conector azureADB2C. El sufijo es el nombre del atributo con el valor necesario, por ejemplo given_name.
  6. Establezca las directivas. Hay tres acciones definidas: allowUnauthenticated, allowAnyAuthenticated y allowIfAny. Cada acción está asociada a un resource. La directiva se evalúa para ese resource.

Nota:

headers y policies usan las extensiones de servicio de JavaScript o GoLang para implementar lógica arbitraria.

appgateways:
  - name: Sonar
    location: /
    upstream: https://example.com:8080
    errorPage: https://example.com:8080/sonar/error
    unauthorizedPage: https://example.com:8080/sonar/accessdenied

    headers:
      SM_USER: azureADB2C.sub
      firstname: azureADB2C.given_name
      lastname: azureADB2C.family_name

    policies:
      - resource: ~ \.(jpg|png|ico|svg)
        allowUnauthenticated: true
      - resource: /
        allowAnyAuthenticated: true
      - resource: /sonar/daily_deals
        allowIfAny:
          azureADB2C.customAttribute: Rewards Member

Azure Key Vault como proveedor de secretos

Proteja los secretos que utiliza Orchestrator para conectarse a Azure AD B2C y a cualquier otro sistema de identidades. Maverics carga los secretos en texto sin formato fuera de maverics.yaml; sin embargo, en este tutorial, usa Azure Key Vault como proveedor de secretos.

Siga ñas instrucciones de Inicio rápido: Establecimiento y recuperación de un secreto de Azure Key Vault mediante Azure Portal. Agregue los secretos al almacén y tome una nota del SECRET NAME para cada secreto. Por ejemplo, AzureADB2CClientSecret.

Para declarar un valor como secreto en un archivo de configuración maverics.yaml, encapsule el secreto entre corchetes angulares:

connectors:
  - name: AzureADB2C
    type: azure
    oauthClientID: <AzureADB2CClientID>
    oauthClientSecret: <AzureADB2CClientSecret>

El valor de los corchetes angulares debe corresponder al valor de SECRET NAME asignado a un secreto en la instancia de Azure Key Vault.

Para cargar secretos de Azure Key Vault, establezca la variable de entorno MAVERICS_SECRET_PROVIDER en el archivo /etc/maverics/maverics.env, con las credenciales que se encuentran en el archivo azure-credentials.json. Use el siguiente patrón:

MAVERICS_SECRET_PROVIDER='azurekeyvault://<KEYVAULT NAME>.vault.azure.net?clientID=<APPID>&clientSecret=<PASSWORD>&tenantID=<TENANT>'

Complete la configuración.

La siguiente información ilustra cómo aparece la configuración de Orchestrator.

version: 0.4.2
listenAddress: ":443"
tls:
  maverics:
    certFile: certs/maverics.crt
    keyFile: certs/maverics.key

authProvider: azureADB2C

connectors:
  - name: azureADB2C
    type: azure
    oidcWellKnownURL: https://<tenant name>.b2clogin.com/<tenant name>.onmicrosoft.com/B2C_1_login/v2.0/.well-known/openid-configuration
    oauthRedirectURL: https://example.com/oidc-endpoint
    oauthClientID: <azureADB2CClientID>
    oauthClientSecret: <azureADB2CClientSecret>
    authType: oidc

appgateways:
  - name: Sonar
    location: /
    upstream: http://example.com:8080
    errorPage: http://example.com:8080/sonar/accessdenied
    unauthorizedPage: http://example.com:8080/sonar/accessdenied

    headers:
      SM_USER: azureADB2C.sub
      firstname: azureADB2C.given_name
      lastname: azureADB2C.family_name

    policies:
      - resource: ~ \.(jpg|png|ico|svg)
        allowUnauthenticated: true
      - resource: /
        allowAnyAuthenticated: true
      - resource: /sonar/daily_deals
        allowIfAny:
          azureADB2C.customAttribute: Rewards Member

Prueba del flujo

  1. Vaya a la dirección URL de la aplicación local, https://example.com/sonar/dashboard.
  2. Orchestrator redirige a la página de flujo del usuario.
  3. Seleccione el IdP en la lista.
  4. Escriba las credenciales, incluido un token de MFA, si es necesario por el IdP.
  5. Se le redirige a Azure AD B2C, que reenvía la solicitud de la aplicación al URI de redirección de Orchestrator.
  6. Orchestrator evalúa las directivas y calcula los encabezados.
  7. Aparece la aplicación solicitada.

Pasos siguientes