Cliente OpenID Connect para Microsoft Azure Active Directory
Proporciona integración de autenticación con Microsoft Azure Active Directory (Azure AD/Entra ID) para Drupal a través del módulo OpenID Connect.
openid_connect_windows_aad
Instalar
composer require 'drupal/openid_connect_windows_aad:8.x-1.4'
Overview
El módulo cliente OpenID Connect Microsoft Azure Active Directory es un plugin especializado para el módulo OpenID Connect que permite a los sitios Drupal autenticar usuarios a través de Microsoft Azure Active Directory (ahora conocido como Microsoft Entra ID). Soporta tanto inquilinos estándar de Azure AD como configuraciones de Azure AD B2C (Business to Consumer).
El módulo proporciona una integración completa con la plataforma de identidad de Microsoft, incluyendo la capacidad de recuperar información del usuario desde Microsoft Graph API, mapear membresías de grupos de Azure AD a roles de Drupal, y soporte para escenarios de Single Sign-On/Single Sign-Out. Los secretos del cliente se almacenan de forma segura utilizando el módulo Key de Drupal, mejorando la seguridad al separar las credenciales sensibles de la configuración.
Este módulo es esencial para organizaciones empresariales que utilizan Microsoft 365 o servicios de Azure y desean proporcionar experiencias de autenticación fluidas para sus aplicaciones e intranets basadas en Drupal.
Features
- Flujo completo de autenticación OpenID Connect con Microsoft Azure Active Directory y Azure AD B2C
- Integración con Microsoft Graph API para recuperar información de perfil de usuario y membresía de grupos
- Mapeo automático y manual de grupos de Azure AD a roles de Drupal con opción de modo estricto
- Almacenamiento seguro del secreto del cliente utilizando el módulo Key de Drupal
- Soporte para Single Sign-Out (SSO) con capacidad de cierre de sesión de canal frontal
- Prompts de autorización configurables (login, consent, select_account, create)
- Selección flexible de clave de sujeto (sub u oid) para mapeo de identidad de usuario entre aplicaciones
- Soporte para actualizar direcciones de correo electrónico de usuarios al iniciar sesión desde Azure AD
- Detección y compatibilidad con endpoints v2 de Azure AD B2C
- Respaldo de dirección de correo electrónico utilizando la propiedad otherMails de Graph API
Use Cases
SSO para intranet empresarial
Las organizaciones que utilizan Microsoft 365 pueden permitir que los empleados inicien sesión en su intranet basada en Drupal usando sus cuentas de trabajo existentes. Los usuarios se autentican una vez con Azure AD y obtienen acceso tanto a los servicios de Microsoft como al sitio Drupal sin credenciales separadas.
Control de acceso basado en roles mediante grupos de AD
Mapee grupos de seguridad de Azure AD a roles de Drupal para otorgar automáticamente permisos apropiados. Por ejemplo, los miembros del grupo de AD 'Editores de Contenido' reciben automáticamente el rol 'editor' de Drupal, mientras que los miembros del grupo de AD 'Administradores del Sitio' reciben el rol 'administrator'.
Autenticación B2C orientada al cliente
Use Azure AD B2C para proporcionar experiencias flexibles de registro e inicio de sesión para clientes. Soporta proveedores de identidad social y flujos de usuario personalizados configurados en Azure, con información del usuario fluyendo hacia los perfiles de Drupal.
Compartir identidad entre múltiples aplicaciones
Cuando se usa la opción de clave de sujeto 'oid', las identidades de usuario son consistentes en todas las aplicaciones de Azure AD en el mismo inquilino. Esto permite la sincronización de datos de usuario entre múltiples sitios Drupal o con otras aplicaciones que usan el mismo inquilino de Azure AD.
Single Sign-Out entre aplicaciones
Cuando un usuario cierra sesión desde cualquier aplicación en el ecosistema de Azure AD (como Office 365), el sitio Drupal recibe un callback de cierre de sesión y termina la sesión del usuario en Drupal automáticamente, asegurando el cumplimiento de seguridad.
Tips
- Use Microsoft Graph API v1.0 en lugar de la obsoleta Azure AD Graph API para mejor compatibilidad y soporte futuro
- Cree registros de aplicación de Azure AD separados para entornos de desarrollo, staging y producción
- Use el proveedor de claves basado en archivos del módulo Key en producción para almacenar secretos fuera de la base de datos
- Configure la clave de sujeto 'oid' si necesita sincronizar datos de usuario entre múltiples sitios Drupal usando el mismo inquilino de Azure
- Habilite el modo estricto de mapeo de grupos en entornos de producción donde las asignaciones de roles deben controlarse centralmente a través de Azure AD
- Pruebe la funcionalidad de cierre de sesión para asegurar que Single Sign-Out funcione correctamente antes de ir a producción
- Agregue la URL de cierre de sesión de canal frontal a su registro de aplicación de Azure para habilitar el cierre de sesión SSO iniciado desde otras aplicaciones
Technical Details
Admin Pages 1
/admin/config/services/openid-connect
Página de configuración para clientes OpenID Connect. Este módulo añade un tipo de cliente 'Windows Azure AD' que puede ser agregado y configurado desde esta página.
Hooks 3
hook_openid_connect_userinfo_save
Procesa datos del usuario después de la autenticación OpenID Connect. Este módulo lo utiliza para actualizar direcciones de correo electrónico y mapear grupos de Azure AD a roles de Drupal.
hook_openid_connect_redirect_logout_alter
Altera la respuesta de redirección de cierre de sesión para agregar el parámetro logout_hint para un cierre de sesión apropiado en Azure AD. Analiza el token ID para extraer el claim login_hint.
hook_openid_connect_userinfo_alter
Altera los datos de userinfo después de la recuperación. Almacena tanto los claims 'sub' como 'oid' y opcionalmente mapea 'oid' a 'sub' cuando se usa oid como clave de sujeto.
Troubleshooting 5
Configure su registro de aplicación de Azure AD para incluir el claim 'email' en el token ID. Alternativamente, habilite 'Usar propiedad otherMails de Graph API para dirección de correo electrónico' u 'Ocultar advertencia de dirección de correo electrónico faltante' en la configuración del módulo.
Asegúrese de haber seleccionado ya sea Microsoft Graph API o Azure AD Graph API (obsoleta) como la configuración del endpoint de información de usuario. El módulo no puede recuperar información de grupos sin una Graph API configurada. También verifique que la aplicación tenga el permiso de API 'GroupMember.Read.All' en Azure.
Verifique que: 1) El endpoint de finalización de sesión esté configurado en la configuración del módulo, 2) SSOut esté habilitado en la configuración principal de OpenID Connect, 3) La URL de cierre de sesión de canal frontal esté configurada en el registro de aplicación de Azure AD.
La clave de sujeto 'oid' requiere un patch para el módulo openid_connect. Consulte https://www.drupal.org/i/3298472 para más información y el patch requerido.
Para endpoints OAuth v2.0, el parámetro 'resource' no se utiliza. Asegúrese de que sus endpoints estén configurados para el protocolo v2.0. Para endpoints v1.0, el módulo agrega automáticamente el parámetro de recurso apropiado.
Security Notes 6
- Los secretos del cliente se almacenan usando el módulo Key de Drupal, que soporta varios backends de almacenamiento seguro incluyendo basados en archivos, variables de entorno y sistemas externos de gestión de claves
- El endpoint de Single Sign-Out (/openid-connect/windows_aad/signout) es de acceso público para permitir que Azure AD inicie el cierre de sesión, pero valida la sesión y la configuración antes de realizar cualquier acción
- Los intentos de cierre de sesión fallidos o sospechosos se registran para monitoreo de seguridad
- El módulo soporta tanto claves de sujeto 'sub' (específica de aplicación) como 'oid' (a nivel de inquilino) - considere las implicaciones de seguridad al elegir cuál usar
- El modo estricto de mapeo de roles asegura que los usuarios no puedan recibir roles fuera de lo que permite la membresía de grupos de Azure AD
- Toda la comunicación con los endpoints de Azure AD utiliza HTTPS