Azure · Sitecore

Sitecore Identity Server y los grupos de seguridad de Azure AD límite parte 3

Parte 1 – Un usuario era miembro de 180 Grupos de Seguridad y después de ingresar sus credenciales, era redirigido a una página de error HTTP 431 o a una página en blanco pero nunca a Sitecore Experience Platform.

Parte 2 – El usuario era miembro de 54 Grupos de Seguridad, y después de ingresar sus credenciales, recibió el error “You do not have access to the system. If you think this is wrong, please contact the system administrator”. Tras un análisis adicional, parece que el usuario pertenece a grupos anidados que superan el límite de integración de Azure AD.

Parte 3 aquí vamos… 🙂

Sitecore support believes the user belongs to nested groups exceeding the limit of 170 groups, and suggested the following

  1. Disminuir el número de grupos en los que algunos de sus usuarios están
  2. Crear un Azure Active Directory separado para administrar solo los grupos de Sitecore
  3. Mover los permisos de Sitecore desde los “Azure AD Security Groups” a los “Azure AD Application Roles”

Con el fin de obtener una confirmación sobre el límite de integración de Azure AD y obtener el análisis de Microsoft, y recomendado por Sitecore también, se abrió un ticket con el Soporte de Azure.

Microsoft verificó al usuario y el total de grupos totalizó 350 debido a la existencia de un grupo anidado, como señaló el soporte de Sitecore. Además de eso, también confirmaron la limitación con Azure AD.

En organizaciones más grandes, el número de grupos de los que un usuario es miembro puede exceder el límite que Azure Active Directory añadirá a un token. 150 grupos para un token SAML y 200 para un JWT. Esto puede provocar resultados impredecibles. Si sus usuarios tienen grandes números de membresía en grupos, recomendamos usar la opción de restringir los grupos emitidos en las reclamaciones a los grupos relevantes para la aplicación

https://docs.microsoft.com/en-us/azure/active-directory/hybrid/how-to-connect-fed-group-claims

Y Microsoft también hizo un par de sugerencias

  1. Azure AD Application Roles (igual que lo sugerido por Sitecore)
  2. Azure AD Application Registration for group attributes

SPOILER ALERT
Ambas sugerencias funcionan sin problemas, sin embargo, Azure AD Application Registration for group attributes tiene una interrupción mínima para el flujo actual así como para la configuración de Active Directory, PERO requiere una de las siguientes suscripciones en su Azure AD: Enterprise Mobility + Security E5 o Azure AD Premium P2.

Azure AD Application Roles

Asumiendo que ya has configurado la integración de Azure AD con Sitecore, pongámonos en marcha

  1. En Azure, visita App Registration y encuentra la que estás usando en tu Sitecore Identity Server / Sitecore environment, luego haz clic en su Manifest
Azure App Registration Manifest Blog Vinicius Deschamps

2. Actualmente, así es como debe verse tu Manifest, y tendrás que modificar los parámetros de resaltado en Manifest: appRoles y groupMembershipClaims

Los appRoles reemplazarán la necesidad de que Azure AD Security Groups reclamen para Sitecore Roles, en su lugar vas a configurar todo lo que necesites dentro de este parámetro. Y, dado que la Aplicación ya no busca los Azure AD Security Groups, el parámetro groupMembershipClaims se establecerá como null.

Azure App Registration Manifest Change Security Group Blog Vinicius Deschamps
Azure App Registration Manifest Changed Blog Vinicius Deschamps

“El displayName no puede contener espacios”

“El id debe ser un GUID único”

“La propiedad value no puede contener espacios”

“La value property of each app role definition should exactly match the strings that are used in the code in the application”

https://docs.microsoft.com/pt-br/azure/active-directory/develop/howto-add-app-roles-in-azure-ad-apps

3. Ahora que has creado los appRoles, y cambiado el Manifest, ve a Enterprise Applications

En la esquina superior izquierda, haz clic en el Portal Menu, luego haz clic en Azure Active Directory

Azure How to Access Azure Active Directory Blog Vinicius Deschamps

Una vez que abres Azure AD, en Manage haz clic en Enterprise Applications, luego All Applications y selecciona la aplicación en la que quieres asignar usuarios

Azure How To Access Enterprise Applications Blog Vinicius Deschamps

4. Selecciona el panel Users and Groups en la navegación izquierda de la aplicación, luego selecciona Add user

azure enterprise application add user blog vinicius deschamps

5. En la Add Assignment, haz clic en Users and groups. Se mostrará una lista de usuarios junto con un campo de búsqueda para localizar y seleccionar al usuario adecuado

Add Assignment Enterprise Application Blog Vinicius Deschamps
Azure Add Assignment Add User Enterprise Application Blog Vinicius Deschamps

5. Una vez que termines de seleccionar al usuario, ahora debes elegir Select Role en Add Assignment. Todos los roles declarados anteriormente en el manifiesto de la app aparecerán junto con un campo de búsqueda para localizar y seleccionar el rol adecuado

Azure AD Add Assignment Select Role Blog Vinicius Deschamps
Azure Add Assignment Add Role Enterprise Application Blog Vinicius Deschamps

6. Finalmente, debes hacer clic en el botón Assign en Add Assignment

Azure Assign Add Assignment Blog Vinicius Deschamps
azure enterprise application user assigned blog vinicius deschamps

Consejo
Si por alguna razón necesitas asignar múltiples roles por usuario, debes añadir al usuario dos, tres, cuatro veces, dependiendo del número de roles que quieras asignar, y asignar roles individualmente a cada uno de los usuarios duplicados.

Bien, desde la perspectiva de Azure ya terminaste, así que pasemos a los cambios en Sitecore ya que se requieren ajustes en Sitecore.Plugin.IdentityProvider.AzureAd.xml

7. Ve a tus App Services, haz clic en el Sitecore Identity App Service, y busca App Service Editor, luego haz clic en Go

Azure App Services App Editor Blog Vinicius Deschamps

8. En el App Service Editor navega a sitecore\Sitecore.Plugin.IdentityProvider.AzureAd\Config y haz clic en Sitecore.Plugin.IdentityProvider.AzureAd.xml

Sitecore Plugin Identity Provider Azure AD Config Blog Vinicius Deschamps

9. A tu derecha, el archivo se muestra y debes modificar un par de parámetros

Vamos a mostrar primero cómo está actualmente

Y aquí está la versión modificada

Básicamente, el parámetro type de SourceClaims cambió de “group” a http://schemas.microsoft.com/ws/2008/06/identity/claims/role”, y el parámetro value de SourceClaims debe coincidir exactamente con las cadenas que se utilizan en el código de la aplicación, por lo que cambió de GUID de Azure AD Security Group al valor definido en el Manifest de la App Registration.

Consejo
Tu archivo probablemente contiene muchos SourceClaims y hasta ahora, utilizando GUID de Azure Security Group, así que en lugar de usar una cadena en tu parámetro value del App Registration Manifest, considera usar el existente GUID de Azure AD Security Group para cada appRole que tengas que crear, porque modificar el archivo requerirá menos esfuerzo.

10. Una vez que hayas modificado todo, reinicia tu Sitecore Identity Server y verifica si puedes iniciar sesión correctamente usando Azure AD

Azure AD Application Registration para atributos de grupo

Nota importante
Debes tener una de las siguientes suscripciones específicas asociadas con tu Azure AD: Enterprise Mobility + Security E5 o Azure AD Premium P2, de lo contrario te verás atascado durante el paso Add Assignment

Azure Add Assignment Warning Add Group Blog Vinicius Deschamps
  1. En Azure, visita App Registration y encuentra la que estás usando en tu Sitecore Identity Server / Sitecore environment, luego haz clic en su Manifest
Azure App Registration Manifest Blog Vinicius Deschamps

2. Actualmente, así es como debe verse tu Manifest, y tendrás que modificar los parámetros destacados en Manifest: groupMembershipClaims

En este momento, Azure AD Security Groups siguen siendo necesarios pero la diferencia es que, en lugar de hacer que la aplicación busque todos ellos, queremos emitir solo los grupos que estén explícitamente asignados a la aplicación y en los que el usuario sea miembro, por lo que el parámetro groupMembershipClaims se establecerá como ApplicationGroup.

Azure App Registration Change Manifest Application Group Blog Vinicius Deschamps

3. Ahora que modificaste groupMembershipClaims, y cambiaste el Manifest, ve a Enterprise Applications

En la esquina superior izquierda, haz clic en el Portal Menu, luego haz clic en Azure Active Directory

Azure How to Access Azure Active Directory Blog Vinicius Deschamps

Una vez que abres Azure AD, bajo Manage haz clic en Enterprise Applications, luego All Applications y selecciona la aplicación en la que quieres asignar usuarios

Azure How To Access Enterprise Applications Blog Vinicius Deschamps

4. Selecciona el panel Users and Groups en la navegación lateral de la aplicación, luego selecciona Add user

azure enterprise application add user blog vinicius deschamps

5. En la Add Assignment, haz clic en Users and groups. Se mostrará una lista de usuarios y grupos con un campo de búsqueda para localizar y seleccionar el grupo adecuado

Add Assignment Enterprise Application Blog Vinicius Deschamps
Azure Add Assignment Add Group Enterprise Application Blog Vinicius Deschamps

6. Finalmente, debes hacer clic en el botón Assign en Add Assignment

Azure Add Assignment Add Role Enterprise Application Group Blog Vinicius Deschamps
azure enterprise application group assigned blog vinicius deschamps

Como podrías tener varios Grupos de Azure AD y Aplicaciones Empresariales considera usar un script de Powershell para lograrlo

$azureAdGroups = Get-Content .\AzureADGroups.txt $enterpriseApplication = Get-Content .\EnterpriseApplication.txt foreach ($eaId in $enterpriseApplication) { $getEnterpriseApplication = Get-AzureADServicePrincipal -Filter "DisplayName eq '$eaId'" foreach ($securityGroups in $azureAdGroups) { $getGroups = Get-AzureADGroup -Filter "DisplayName eq '$securityGroups'" try { New-AzureADGroupAppRoleAssignment -ObjectId $getGroups.ObjectId -PrincipalId $getGroups.ObjectId -ResourceId $getEnterpriseApplication.ObjectId -Id ([Guid]::Empty) | out-null try { New-AzureADGroupAppRoleAssignment -ObjectId $getGroups.ObjectId -PrincipalId $getGroups.ObjectId -ResourceId $getEnterpriseApplication.ObjectId -Id ([Guid]::Empty) | out-null } catch { Write-Host -NoNewLine -Foreground Green $getGroups.DisplayName "successfully added to" $getEnterpriseApplication.DisplayName "`n" } } catch { Write-Host -NoNewLine -Foreground Yellow $getGroups.DisplayName "already exists in" $getEnterpriseApplication.DisplayName "`n" } } }

En cuanto termines de añadir los Grupos de Azure AD al Enterprise Application, intenta acceder a Sitecore usando tus credenciales de Azure AD, debería funcionar de inmediato… y ¡hemos terminado!

Espero que te haya gustado, y nos vemos en mi próxima publicación!

Foto por Paule Knete en Unsplash

AzureAzure ADSitecore
Sitecore Identity Server y los grupos de seguridad de Azure AD límite parte 3 — Vinicius Deschamps