Azure · Sitecore
Límite de grupos de seguridad de Azure AD y Sitecore Identity Server
Una de las cosas más interesantes – y fáciles – de realizar ahora con Sitecore Identity es la integración con Azure Active Directory (AD), que permite a tus usuarios autenticarse con las mismas credenciales que para su correo corporativo.
El pasado septiembre, tuve la oportunidad de configurar una integración siguiendo el blog de Derek Correia. Así que supongo que ya sabes cómo funciona el proceso de integración de Azure AD y Sitecore Identity Server.
La autenticación y autorización ocurre a través del Azure AD Security Group porque configuramos el App Registration Manifest para usar SecurityGroup en groupMembershipClaims, y para el flujo de reclamación de roles de Sitecore se basa en el Security Group Object ID configurado en el archivo Sitecore.Plugin.IdentityProvider.AzureAd.xml junto con el rol que debe solicitar.
Una vez que has configurado la integración, notarás que los usuarios ahora pueden acceder a Sitecore Content Management usando sus credenciales de Azure AD.
Hace un par de semanas recibí una solicitud diciendo que un usuario no podía iniciar sesión con sus credenciales de Azure AD y veía ya sea HTTP ERROR 431 o una página en blanco sin información adicional.

Le pedí al usuario que probara
- En su teléfono móvil pero sin conectarse a la red inalámbrica de la empresa
- En la computadora de un compañero
Nada funcionó, así que empecé a pensar que podría haber algo con su perfil en Azure AD. Así que comparé nuestras cuentas y la mayor diferencia fue el número de grupos de Azure AD a los que pertenecemos.
El usuario es miembro de 180 grupos
Luego, para validar esto, me agregué a los mismos grupos y pude reproducir el error.
Decidí abrir un ticket con Sitecore, expliqué la situación, compartí logs y ellos propusieron una solución posible pero desafortunadamente no funcionó
Por favor, considera aplicar las correcciones sugeridas en el código de ejemplo a continuación a tu Identity Server y a toda la infraestructura de balanceo de carga/gateway/red que coloques delante de Identity Server:
<system.web>
…..
</system.web>
Mientras Sitecore investigaba, continué la investigación y traté de responder a las siguientes preguntas
- ¿Sitecore busca solo los grupos listados en el archivo Sitecore.Plugin.IdentityProvider.AzureAd.xml?
- ¿Importa si el grupo es un Security o un Distribution group?
- ¿Cuál es el máximo de grupos de los que puedo ser miembro y firmar sin problemas?
¿Sitecore busca solo los grupos listados en el archivo Sitecore.Plugin.IdentityProvider.AzureAd.xml?
Siéntete libre de corregirme si me equivoco, pero en mi comprensión, durante el proceso de autenticación toda la pertenencia se transmite desde Azure AD a Sitecore, y se valida en el Sitecore.Plugin.IdentityProvider.AzureAd.xml. En resumen, no importa si tienes una reclamación única o 1000, lo que importa es cuántos grupos perteneces.
¿Importa si el grupo es un Security o un Distribution group?
Como se mencionó anteriormente, dado que el App Registration Manifest está configurado para usar SecurityGroup en groupMembershipClaims, el único tipo de grupo que se tiene en cuenta son los Security Groups
¿Cuál es el máximo de grupos de los que puedo ser miembro y firmar sin problemas?
La única forma que pude determinar fue haciéndolo por prueba y error
- Verificar el # de grupos a los que pertenezco
- Eliminar de los grupos individualmente
- Probar de nuevo
Hay una forma de verificar la membresía de grupo a través del Azure Portal, sin embargo, te da el total y no solo los Security Groups, así que tuve que usar Powershell
$FindUser = “[email protected]”
(Get-AzureADUser -SearchString $FindUser | Get-AzureADUserMembership -All $true | ? {$_.ObjectType -ne “Role”} | % {Get-AzureADGroup -ObjectId $_.ObjectId | select DisplayName,ObjectType,MailEnabled,SecurityEnabled,ObjectId} | ? {$_.SecurityEnabled -eq $true}).count
Aquí está la salida esperada (nota: el tiempo puede variar dependiendo del # de grupos de los que formes parte)

Nota que el total de Security Groups es 175, y estoy recibiendo ya sea el HTTP Error 431 o una página en blanco, así que es hora de probar y encontrar el número mágico!
1ª prueba
Reducido a 150 Security Groups, y el error desapareció
2ª prueba
Aumentar 10 Security Groups, 160 en total y aún SIN ERRORES
3ª prueba
+10 Security Groups, y aún SIN ERRORES
Así que, cruzo los dedos, quizá ya tenga algo...
4ª prueba
Ahora, +1 Security Group y ¡BAM! EL ERROR VUELVE
170 es el número mágico que estábamos buscando
¿Por qué 170? ¿Qué está causando esta limitación?
Soporte de Sitecore pidió un Fiddler Trace para realizar un análisis adicional y respondieron lo siguiente
“Probé que el límite de las cookies es alrededor de 32KB y tu solicitud – al tener 175 grupos – tenía alrededor de 34KB”
Además de eso, el soporte de Sitecore dijo
Para sortear esta limitación de Azure podrías
- Disminuir el número de grupos de los que forman parte tus usuarios
- Mover tu Identity Provider del App Service a una máquina VM de Windows Server donde tengas acceso a esas claves de registro
- aumentar el valor de MaxFieldLength y MaxRequestBytes en el registro HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP\Parameters
Una vez más, un enorme agradecimiento al Soporte de Sitecore
Espero que te haya gustado, y nos vemos en mi próxima publicación!