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:
Una suscripción de Azure
- Si no tiene una, puede obtener una cuenta gratuita de Azure
- 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.
- 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.
- 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.
- Azure AD B2C envía la solicitud de autenticación al proveedor de identidades de redes sociales configuradas.
- El proveedor de identidades desafía al usuario para pedir sus credenciales. Podría requerir una autenticación multifactor (MFA).
- 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.
- 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.
- 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.
- 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
- Registro de una aplicación en Azure Active Directory B2C para inquilino de Azure AD B2C.
- Conceda a Microsoft MS Graph API los permisos para sus aplicaciones. Permisos de uso:
offline_access
,openid
. - 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
. - Cree flujos de usuario y directivas personalizadas en Azure Active Directory B2C.
- 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.
- defina los atributos que se recopilarán durante el registro.
- 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
ensystemd
- 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
Obtenga el paquete RPM de Maverics más reciente.
Coloque el paquete en el sistema en el que quiera instalar Maverics. Si va a copiar en un host remoto, use SSH scp.
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
.Maverics se ejecuta como servicio de
systemd
.Utilice el siguiente comando para comprobar que el servicio de Maverics se está ejecutando:
sudo service maverics status
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.
- El archivo predeterminado
maverics.yaml
se crea en el/etc/maverics
directorio. - Configure Orchestrator para proteger la aplicación.
- Integración con Azure AD B2C y almacenamiento.
- Recupere los secretos de Azure Key Vault.
- 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.
- Desde la configuración de la aplicación, copie el id. de cliente, el secreto y el URI de redirección a su inquilino.
- Escriba un nombre del conector (por ejemplo,
azureADB2C
). - Establezca el conector
type
enazure
. - Haga una nota con el nombre del conector. Usará este valor en otros parámetros de configuración.
- Establecer
authType
enoidc
. - Para el parámetro
oauthClientID
, establezca el id. de cliente que copió. - Para el parámetro
oauthClientSecret
, establezca el secreto de cliente que copió. - Para el parámetro
oauthRedirectURL
, establezca el URI de redireccionamiento que copió. - 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.
- Escriba un nombre de puerta de enlace de aplicaciones.
- Establezca
location
. En el ejemplo se usa la raíz de la aplicación/
. - Defina la aplicación protegida en
upstream
. Use la convención host:port:https://example.com:8080
. - Establezca los valores para las páginas de error y no autorizadas.
- 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 ejemplogiven_name
. - Establezca las directivas. Hay tres acciones definidas:
allowUnauthenticated
,allowAnyAuthenticated
yallowIfAny
. Cada acción está asociada a unresource
. La directiva se evalúa para eseresource
.
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
- Vaya a la dirección URL de la aplicación local,
https://example.com/sonar/dashboard
. - Orchestrator redirige a la página de flujo del usuario.
- Seleccione el IdP en la lista.
- Escriba las credenciales, incluido un token de MFA, si es necesario por el IdP.
- Se le redirige a Azure AD B2C, que reenvía la solicitud de la aplicación al URI de redirección de Orchestrator.
- Orchestrator evalúa las directivas y calcula los encabezados.
- Aparece la aplicación solicitada.