Azure · Sitecore
Límite de grupos de seguridad de Sitecore Identity Server y Azure AD
Una de las cosas más emocionantes – y fáciles – de realizar ahora con Sitecore Identity es la integración con Azure Active Directory (AD) que permite que tus usuarios se autentiquen con las mismas credenciales que para su correo corporativo.
El septiembre pasado, 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 la autorización ocurren a través de Azure AD Security Group porque configuramos el App Registration Manifest para usar SecurityGroup en groupMembershipClaims, y para el flujo de atribución de roles de Sitecore se basa en el Security Group Object ID establecido en el archivo Sitecore.Plugin.IdentityProvider.AzureAd.xml junto con el rol que debe solicitar.
Una vez que tengas configurada la integración, notarás que los usuarios ahora pueden acceder a Sitecore Content Management utilizando sus credenciales de Azure AD.
Hace un par de semanas, recibí una solicitud diciendo que un usuario no podía iniciar sesión usando sus credenciales de Azure AD y aparecía ya sea HTTP ERROR 431 o una página en blanco sin información adicional.

Le he pedido al usuario que pruebe
- En su teléfono, pero sin conectarse a la red inalámbrica de la empresa
- En la computadora de un compañero de trabajo
Nada funcionó, así que comencé 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
Entonces, para validar esto, me añadí a los mismos grupos y pude reproducir el error.
Decidí abrir un ticket con Sitecore, expliqué la situación, compartí los registros y ellos propusieron una posible solución pero desafortunadamente no funcionó
Por favor, considera aplicar las correcciones sugeridas en el código de ejemplo a continuación en 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 encontrar las siguientes respuestas
- ¿Sitecore está buscando 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 poder iniciar sesión sin problemas?
¿Sitecore está buscando solo los grupos listados en el archivo Sitecore.Plugin.IdentityProvider.AzureAd.xml?
Siéntete libre de corregirme si me equivoco, pero en mi entendimiento, 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 un único o 1000 claims, lo que importará es cuántos grupos perteneces.
¿Importa si el grupo es un Security o un Distribution group?
Como se mencionó antes, tal como el App Registration Manifest está configurado para usar SecurityGroup en groupMembershipClaims, el único tipo de grupo que se está considerando son los Security Groups
¿Cuál es el máximo de grupos de los que puedo ser miembro y poder iniciar sesión sin problemas?
La única forma de determinarlo fue hacer pruebas
- Verificar la cantidad de grupos a los que pertenezco
- Eliminar de los grupos de forma individual
- Probar de nuevo
Hay una forma de verificar la Group Membership 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: la hora puede variar dependiendo del # de grupos a los que perteneces)

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
Entonces, cruzo los dedos, quizá ya tengo algo ahora…
4ª prueba
Ahora, +1 Security Group y ¡BAM! EL ERROR REGRESA
170 es el número mágico que estábamos buscando
¿Por qué 170? ¿Qué está causando esta limitación?
Soporte de Sitecore solicitó un Fiddler Trace para realizar un análisis adicional y respondieron lo siguiente
“Probé que el límite para las cookies es alrededor de 32KB y tu solicitud – aunque tenga 175 grupos – estaba alrededor de 34KB”
Además de eso, el soporte de Sitecore dijo
Para superar esta limitación de Azure podrías
- Disminuir la cantidad de grupos en los que están tus usuarios
- Mover tu Identity Provider del App Service a una máquina virtual 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, muchas gracias al Soporte de Sitecore
¡Espero que te haya gustado, y nos vemos en mi próxima publicación!