Configurer des revendications de groupe pour des applications en utilisant Microsoft Entra ID

Microsoft Entra ID peut fournir les informations d’appartenance au groupe d’un utilisateur dans des jetons utilisés au sein des applications. Cette fonctionnalité prend en charge deux modèles principaux :

  • Groupes identifiés par leur attribut d’identificateur d’objet Microsoft Entra
  • groupes identifiés par l’attribut sAMAccountName ou GroupSID pour les groupes et utilisateurs synchronisés par Active Directory.
  • Groupes identifiés par leur attribut Nom d’affichage pour les groupes cloud uniquement

Important

Le nombre de groupes émis dans un jeton est limité à 150 pour les assertions SAML et 200 pour JWT, y compris les groupes imbriqués. Dans les grandes organisations, le nombre de groupes dont un utilisateur est un membre peut dépasser la limite que Microsoft Entra va ajouter à un jeton. Le dépassement d’une limite peut entraîner des résultats imprévisibles. Pour découvrir des solutions de contournement à ces limites, lisez Avertissements importants pour cette fonctionnalité.

Avertissements importants pour cette fonctionnalité

  • La prise en charge de l’utilisation des attributs sAMAccountName et d’identificateur de sécurité synchronisés localement est conçue pour permettre le déplacement d’applications existantes à partir des services de fédération Active Directory (AD FS) et d’autres fournisseurs d’identité. Les groupes gérés dans Microsoft Entra ID ne contiennent pas les attributs nécessaires pour émettre ces revendications.

  • Pour éviter la limite du nombre de groupes si vos utilisateurs ont un grand nombre d’appartenances à un groupe, vous pouvez restreindre les groupes émis dans les revendications aux groupes pertinents pour l’application. Apprenez-en davantage sur l’émission de groupes attribués à l’application pour les jetons JWT et les jetons SAML. S’il n’est pas possible d’attribuer des groupes à vos applications, vous pouvez aussi configurer un filtre de groupe afin de réduire le nombre de groupes émis dans la revendication. Le filtrage de groupe s’applique aux jetons émis pour les applications où les revendications de groupe et le filtrage ont été configurés dans le panneau Applications Enterprise du portail.

  • Une limite de 5 groupes s’applique aux revendications de groupe si le jeton est émis par le biais du flux implicite. Les jetons demandés via le flux implicite auront une revendication "hasgroups":true uniquement si l’utilisateur figure dans plus de cinq groupes.

  • Nous vous recommandons de baser l’autorisation dans l’application sur les rôles d’application plutôt que sur les groupes lorsque :

    • Vous développez une nouvelle application, ou une application existante peut être configurée pour celle-ci.
    • La prise en charge des groupes imbriqués n’est pas obligatoire.

    L’utilisation des rôles d’application limite la quantité d’informations qui doivent figurer dans le jeton, est davantage sécurisée et sépare l’affectation d’utilisateurs de la configuration de l’application.

Revendications de groupe pour les applications migrant à partir d’AD FS et d’autres fournisseurs d’identité

De nombreuses applications configurées pour s’authentifier auprès d’AD FS s’appuient sur les informations d’appartenance de groupe sous la forme d’attributs de groupe Windows Server Active Directory. Ces attributs sont le sAMAccountName du groupe qui peut être qualifié par un nom de domaine ou l’identificateur de sécurité du groupe Windows (GroupSID). Lorsque l’application est fédérée avec AD FS, AD FS utilise la fonction TokenGroups pour récupérer les appartenances de groupe de l’utilisateur.

Une application qui a été déplacée d’AD FS a besoin de revendications au même format. Les revendications de groupe et de rôle émises depuis Microsoft Entra ID peuvent contenir l’attribut sAMAccountName qualifié par un domaine ou l’attribut GroupSID synchronisé à partir d’Active Directory, au lieu de l’attribut objectID Microsoft Entra ID du groupe.

Les formats pris en charge pour les revendications de groupe sont les suivants :

  • ObjectId du groupe Microsoft Entra : disponible pour tous les groupes.
  • sAMAccountName : disponible pour les groupes synchronisés à partir d’Active Directory.
  • NetbiosDomain\sAMAccountName : disponible pour les groupes synchronisés à partir d’Active Directory.
  • DNSDomainName\sAMAccountName : disponible pour les groupes synchronisés à partir d’Active Directory.
  • Identificateur de sécurité de groupe local : disponible pour les groupes synchronisés à partir d’Active Directory.

Notes

sAMAccountName et les attributs GroupSID locaux sont disponibles uniquement sur les objets de groupe synchronisés à partir d’Active Directory. Ils ne sont pas disponibles sur les groupes créés dans Microsoft Entra ID ou Office 365. Les applications configurées dans Microsoft Entra ID pour obtenir les attributs de groupe synchronisés locaux les obtiennent seulement pour les groupes synchronisés.

Options pour l’utilisation d’informations de groupe par les applications

Les applications peuvent appeler le point de terminaison du groupe Microsoft Graph pour obtenir des informations de groupe pour l’utilisateur authentifié. Cet appel garantit que tous les groupes dont un utilisateur est membre sont disponibles même si de nombreux groupes sont impliqués. L’énumération de groupes est alors indépendante des limitations applicables à la taille des jetons.

Cependant, si une application existante est conçue pour consommer des informations de groupe via des revendications, vous pouvez configurer Microsoft Entra ID avec différents formats de revendication. Considérez les options suivantes :

  • Lors de l’utilisation de l’appartenance de groupe à des fins d’autorisation dans l’application, il est préférable d’utiliser l’attribut ObjectID du groupe. L’attribut ObjectID du groupe est immuable et unique dans Microsoft Entra ID. Il est disponible pour tous les groupes.

  • Si vous utilisez l’attribut sAMAccountName du groupe local pour l’autorisation, utilisez des noms qualifiés par un domaine. Cela réduit le risque de conflit de noms. sAMAccountName peut être unique au sein d’un domaine Active Directory mais si plusieurs domaines Active Directory sont synchronisés avec un locataire Microsoft Entra, il est possible que plusieurs groupes aient le même nom.

  • Envisagez d’utiliser des rôles d’application pour fournir une couche d’indirection entre l’appartenance de groupe et l’application. L’application prend alors des décisions d’autorisation interne basées sur les revendications de rôle dans le jeton.

  • Si l’application est configurée pour obtenir des attributs de groupe qui ont été synchronisés à partir d’Active Directory et qu’un groupe ne contient pas ces attributs, celui-ci n’est pas inclus dans les revendications.

  • Les revendications de groupe dans les jetons incluent des groupes imbriqués, sauf lorsque vous utilisez l’option permettant de restreindre les revendications de groupe aux groupes affectés à l’application.

    Si un utilisateur est membre du GroupeB et que celui-ci est membre de GroupeA, les revendications de groupe pour l’utilisateur contiennent le GroupeA et le GroupeB. Quand les utilisateurs d’une organisation disposent d’un nombre important d’appartenances de groupe, le nombre de groupes listés dans le jeton peut faire augmenter la taille du jeton. Microsoft Entra ID limite le nombre de groupes qu’il émet dans un jeton à 150 pour les assertions SAML et à 200 pour JWT. Si un utilisateur est membre d’un nombre supérieur de groupes, les groupes sont omis. Un lien vers le point de terminaison Microsoft Graph pour obtenir les informations de groupe est inclus à la place.

Conditions préalables à l’utilisation d’attributs de groupe synchronisés à partir d’Active Directory

Les revendications d’appartenance de groupe peuvent être émises dans les jetons pour n’importe quel groupe si vous utilisez le format ObjectId. Pour utiliser des revendications de groupe dans des formats autres que l’attribut ObjectId de groupe, les groupes doivent être synchronisés depuis Active Directory via Microsoft Entra Connect.

Pour configurer Microsoft Entra ID afin d’émettre des noms de groupe pour des groupes Active Directory :

  1. Synchroniser les noms de groupe à partir d’Active Directory

    Avant que Microsoft Entra ID puisse émettre des noms de groupe ou un SID de groupe local dans des revendications de groupe ou de rôle, vous devez synchroniser les attributs nécessaires depuis Active Directory. Vous devez exécuter Microsoft Entra Connect version 1.2.70 ou ultérieure. Les versions de Microsoft Entra Connect antérieures à 1.2.70 synchronisent les objets de groupe depuis Active Directory, mais n’incluent pas les attributs de nom de groupe nécessaires.

  2. Configurer l’inscription d’application dans Microsoft Entra ID pour inclure des revendications de groupe dans les jetons

    Vous pouvez configurer des revendications de groupe dans la section Applications d’entreprise du portail ou à l’aide du manifeste d’application dans la section Inscriptions d’applications. Pour configurer les revendications de groupe dans le manifeste de l’application, consultez Configurer l’inscription d’application Microsoft Entra pour les attributs de groupe plus loin dans cet article.

Ajouter des revendications de groupe aux jetons pour les applications SAML en configurant l’authentification unique

Pour configurer des revendications de groupe pour une application SAML figurant ou non dans la galerie à l’aide de l’authentification unique :

  1. Ouvrez Applications d’entreprise, sélectionnez l’application dans la liste, sélectionnez Configuration de l’authentification unique, puis sélectionnez Attributs utilisateur et revendications.

  2. Sélectionnez Ajouter une revendication de groupe.

    Capture d’écran qui montre la page des attributs et des revendications de l’utilisateur, avec le bouton pour ajouter une revendication de groupe.

  3. Utilisez les options pour sélectionner les groupes à inclure dans le jeton.

    Capture d’écran montrant la fenêtre Revendications de groupe avec l’option Groupes de sécurité.

    Sélection Description
    Tous les groupes Émet des groupes de sécurité, ainsi que des rôles et des listes de distribution.
    Groupes de sécurité Émet les groupes de sécurité dont l’utilisateur est membre dans la revendication de groupe. Si des rôles d’annuaire sont attribués à l’utilisateur, ils sont émis en tant qu’identifiant d’objet.
    Rôles d’annuaire Si des rôles d’annuaire sont attribués à l’utilisateur, ils sont émis en tant que revendication wids. (La revendication du groupe n’est pas émise.)
    Groupes affectés à l’application Émet uniquement les groupes qui sont explicitement affectés à l’application et dont l’utilisateur est membre. Recommandé pour les grandes organisations en raison de la limite du nombre de groupes dans le jeton.
    • Par exemple, pour émettre tous les groupes de sécurité dont l’utilisateur est membre, sélectionnez Groupes de sécurité.

      Capture d’écran montrant la fenêtre Revendications de groupe avec l’option Groupes de sécurité sélectionnée.

      Pour émettre des groupes en utilisant des attributs Active Directory synchronisés depuis Active Directory au lieu d’attributs objectID Microsoft Entra ID, sélectionnez le format requis dans la liste déroulante Attribut source. Seuls les groupes synchronisés à partir d’Active Directory sont inclus dans les revendications.

      Capture d’écran montrant le menu déroulant de l’attribut source.

    • Pour émettre uniquement les groupes attribués à l’application, sélectionnez Groupes attribués à l’application.

      Capture d’écran montrant la fenêtre Revendications de groupe avec l’option Groupes affectés à l’application sélectionnée.

      Les groupes attribués à l’application sont inclus dans le jeton. Les autres groupes dont l’utilisateur est membre sont omis. Avec cette option, les groupes imbriqués ne sont pas inclus et l’utilisateur doit être un membre direct du groupe attribué à l’application.

      Pour modifier les groupes attribués à l’application, sélectionnez l’application dans la liste Applications d’entreprise. Sélectionnez ensuite Utilisateurs et groupes dans le menu gauche de l’application.

      Pour plus d’informations sur la gestion de l’affectation de groupe à des applications, consultez Affecter un utilisateur ou un groupe à une application d’entreprise.

Émettre le nom complet du groupe cloud dans le jeton

Vous pouvez configurer la revendication de groupe pour inclure le nom d’affichage du groupe pour les groupes cloud uniquement.

  1. Ouvrez Applications d’entreprise, sélectionnez l’application dans la liste, sélectionnez Configuration de l’authentification unique, puis sélectionnez Attributs utilisateur et revendications.

  2. Si vous avez déjà configuré des revendications de groupe, sélectionnez-la dans la section Revendications supplémentaires . Sinon, vous pouvez ajouter la revendication de groupe comme décrit dans les étapes précédentes.

  3. Pour le type de groupe émis dans le jeton, sélectionnez Groupes attribués à l’application :

    Capture d’écran montrant la fenêtre Revendications de groupe avec l’option Groupes affectés à l’application sélectionnée.

  4. Pour émettre un nom d’affichage de groupe uniquement pour les groupes cloud, dans la liste déroulante Attribut source, sélectionnez les Noms complets du groupe cloud uniquement :

    Capture d’écran montrant la liste déroulante Attribut source des revendications de groupe, avec l’option de configuration des seuls noms de groupe cloud sélectionnés.

  5. Pour une configuration hybride, afin d’émettre un attribut de groupe local pour les groupes synchronisés et un nom d’affichage pour les groupes cloud, vous pouvez sélectionner l’attribut de sources locales souhaité et cocher la case Émettre le nom du groupe pour les groupes cloud uniquement :

    Capture d’écran montrant la configuration pour émettre l’attribut de groupe local pour les groupes synchronisés et le nom d’affichage pour les groupes cloud.

Notes

Vous pouvez uniquement ajouter des noms de groupes cloud de groupes attribués à une application. La restriction à groups assigned to the application est due au fait qu’un nom de groupe n’est pas unique et que des noms d’affichage ne peuvent être émis que pour les groupes explicitement affectés à l’application afin de réduire les risques de sécurité. Sinon, tout utilisateur peut créer un groupe avec un nom en double et obtenir l’accès côté application.

Définir les options avancées

Personnaliser le nom de la revendication de groupe

Vous pouvez modifier la façon dont les revendications de groupe sont émises à l’aide des paramètres sous Options avancées.

Si vous sélectionnez Personnaliser le nom de la revendication de groupe, vous pouvez spécifier un autre type de revendication pour les revendications de groupe. Entrez le type de revendication dans la zone Nom, et l’espace de noms facultatif pour la revendication dans la zone Espace de noms.

Capture d’écran avec les options avancées, avec l’option Personnaliser le nom de la revendication de groupe sélectionnée et les valeurs Nom et Espace de noms entrées.

Certaines applications requièrent que les informations d’appartenance de groupe apparaissent dans la revendication de rôle. Vous pouvez éventuellement émettre les groupes de l’utilisateur en tant que rôles en cochant la case Émettre les groupes en tant que revendications de rôle.

Capture d’écran avec les options avancées, avec les cases à cocher sélectionnés pour personnaliser le nom de la revendication de groupe et l’émission des groupes comme revendications de rôle.

Notes

Si vous utilisez l’option pour émettre des données de groupe en tant que rôles, seuls les groupes s’affichent dans la revendication de rôle. Les rôles d’application auxquels l’utilisateur est affecté n’apparaissent pas dans la revendication de rôle.

Filtrage de groupe

Le filtrage de groupe permet un contrôle précis de la liste des groupes inclus dans le cadre de la revendication de groupe. Lorsqu’un filtre est configuré, seuls les groupes qui correspondent au filtre sont inclus dans la revendication de groupe envoyée à cette application. Le filtre est appliqué à tous les groupes, quelle que soit la hiérarchie des groupes.

Notes

Le filtrage de groupe s’applique aux jetons émis pour les applications où les revendications de groupe et le filtrage ont été configurés dans le panneau Applications Enterprise du portail.
Le filtrage des groupes ne s’applique pas aux rôles Microsoft Entra.

Vous pouvez configurer des filtres à appliquer au nom complet ou à l’attribut SAMAccountName du groupe. Les opérations de filtrage suivantes sont prises en charge :

  • Préfixe : correspond au début de l’attribut sélectionné.
  • Suffixe : correspond à la fin de l’attribut sélectionné.
  • Contient : correspond à n’importe quelle partie de l’attribut sélectionné.

Capture d’écran montrant le filtrage sur un réseau.

Transformation de groupe

Certaines applications peuvent nécessiter des groupes dans un format différent de la façon dont ils sont représentés dans Microsoft Entra ID. Pour prendre en charge cet impératif, vous pouvez appliquer une transformation à chaque groupe qui sera émis dans la revendication de groupe. Pour cela, vous devez autoriser la configuration d’une expression régulière et une valeur de remplacement sur les revendications de groupe personnalisées.

Capture d’écran de la transformation de groupe, avec informations regex ajoutées.\

  • Modèle d’expression régulière : utilisez une expression régulière pour analyser les chaînes de texte en fonction du modèle que vous définissez dans cette zone. Si le modèle d’expression régulière indiqué prend la valeur true, le modèle de remplacement d’expression régulière sera exécuté.
  • Modèle de remplacement d’expression régulière : indiquez en notation d’expression régulière comment vous souhaitez remplacer votre chaîne si le modèle d’expression régulière que vous avez indiqué prend la valeur true. Utilisez des groupes de capture pour faire correspondre les sous-expressions dans cette expression régulière de remplacement.

Pour plus d’informations sur le remplacement d’expression régulière et les groupes de capture, consultez Moteur objet d’expression régulière : le groupe capturé.

Remarque

Comme décrit dans la documentation Microsoft Entra, vous ne pouvez pas modifier une revendication restreinte en utilisant une stratégie. La source de données ne peut pas être modifiée, et aucune transformation n’est appliquée lorsque vous générez ces revendications. La revendication de groupe étant toujours une revendication restreinte, vous devez personnaliser les groupes en modifiant le nom. Si vous sélectionnez un nom restreint pour le nom de votre revendication de groupe personnalisée, la revendication sera ignorée au moment de l’exécution.

Vous pouvez également utiliser la fonctionnalité de transformation d’expression régulière comme filtre, car tous les groupes qui ne correspondent pas au modèle d’expression régulière ne sont pas émis dans la revendication résultante.

Si la transformation appliquée à la revendication de groupes d’origine entraîne une nouvelle revendication personnalisée, la revendication de groupes d’origine est omise du jeton. Toutefois, si le regex configuré ne correspond à aucune valeur dans la liste d’origine, la revendication personnalisée n’est pas présente et la revendication de groupes d’origine est incluse dans le jeton.

Modifier la configuration des revendications de groupe

Après avoir ajouté une configuration de revendication de groupe à la configuration Attributs utilisateur et revendications, l’option permettant d’ajouter une revendication de groupe est indisponible. Pour changer la configuration de revendication de groupe, sélectionnez la revendication de groupe dans la liste Revendications supplémentaires.

Capture d’écran de la zone des attributs et revendications de l’utilisateur, avec le nom d’une revendication de groupe mise en surbrillance.

Configurer l’inscription d’application Microsoft Entra pour les attributs de groupe

Vous pouvez aussi configurer les revendications de groupe dans la section des revendications facultatives du manifeste de l’application.

  1. Dans le portail, sélectionnez Identité>Applications>Inscriptions d’applications>Selectionner >Manifeste de l’application.

  2. Activez les revendications d’appartenance à un groupe en modifiant groupMembershipClaims.

    Les valeurs autorisées sont :

    Sélection Description
    All Émet des groupes de sécurité, ainsi que des rôles et des listes de distribution.
    SecurityGroup Émet des groupes de sécurité et des rôles Microsoft Entra dont l’utilisateur est membre dans la revendication de groupe.
    DirectoryRole Si des rôles d’annuaire sont attribués à l’utilisateur, ils sont émis en tant que revendication wids. (Aucune revendication du groupe n’est émise.)
    ApplicationGroup Émet uniquement les groupes qui sont explicitement affectés à l’application et dont l’utilisateur est membre.
    None Aucun groupe n’est renvoyé. (Il ne respecte pas la casse, donc none fonctionne également. Il peut être défini directement dans le manifeste de l’application.)

    Par exemple :

    "groupMembershipClaims": "SecurityGroup"
    

    Par défaut, les attributs ObjectID de groupe sont émis dans la valeur de revendication de groupe. Pour modifier la valeur de revendication afin qu’elle contienne des attributs de groupe local, ou pour modifier le type de revendication en rôle, utilisez la configuration optionalClaims comme décrit à l’étape suivante.

  3. Définissez les revendications facultatives pour la configuration du nom de groupe.

    Si vous souhaitez que les groupes dans le jeton contiennent les attributs de groupe Active Directory local, spécifiez la revendication facultative de type de jeton qui doit être appliquée dans la section optionalClaims. Vous pouvez indiquer plusieurs types de jetons :

    • idToken pour le jeton d’ID d’OIDC ;
    • accessToken pour le jeton d’accès OAuth/OIDC ;
    • Saml2Token pour les jetons SAML.

    Notes

    Le type Saml2Token s’applique aux jetons aux formats SAML 1.1 et SAML 2.0.

    Pour chaque type de jeton pertinent, modifiez la revendication de groupe pour utiliser la section optionalClaims dans le manifeste. Le schéma optionalClaims se présente comme suit :

    {
    "name": "groups",
    "source": null,
    "essential": false,
    "additionalProperties": []
    }
    
    Schéma de revendications facultatives Valeur
    name Doit être "groups".
    source Non utilisé. Omettez ou spécifiez null.
    essential Non utilisé. Omettez ou spécifiez false.
    additionalProperties Liste de propriétés supplémentaires. Les options valides sont "sam_account_name", "dns_domain_and_sam_account_name", "netbios_domain_and_sam_account_name", "cloud_displayname" et "emit_as_roles".

    Dans additionalProperties, seul "sam_account_name", "dns_domain_and_sam_account_name" ou "netbios_domain_and_sam_account_name" est obligatoire. Si plusieurs options sont présentes, la première est utilisée et les autres sont ignorées.

    Certaines applications requièrent des informations de groupe sur l’utilisateur dans la revendication de rôle. Pour remplacer la revendication de groupe par une revendication de rôle, ajoutez "emit_as_roles" aux propriétés supplémentaires. Les valeurs de groupe sont émises dans la revendication de rôle.

    Pour émettre le nom d’affichage du groupe pour les groupes cloud uniquement, vous pouvez ajouter "cloud_displayname" à additional properties. Cette option fonctionne uniquement quand “groupMembershipClaims” a la valeur ApplicationGroup

    Notes

    Si vous utilisez "emit_as_roles", tous les rôles d’application configurés auxquels l’utilisateur est affecté n’apparaîtront pas dans la revendication de rôle.

Exemples

Émettre des groupes en tant que noms de groupe dans les jetons d’accès OAuth au format DNSDomainName\sAMAccountName :

"optionalClaims": {
    "accessToken": [{
        "name": "groups",
        "additionalProperties": ["dns_domain_and_sam_account_name"]
    }]
}

Émettez les noms de groupe à retourner au format NetbiosDomain\sAMAccountName comme revendication de rôle dans les jetons d’ID SAML et OIDC :

"optionalClaims": {
    "saml2Token": [{
        "name": "groups",
        "additionalProperties": ["netbios_domain_and_sam_account_name", "emit_as_roles"]
    }],

    "idToken": [{
        "name": "groups",
        "additionalProperties": ["netbios_domain_and_sam_account_name", "emit_as_roles"]
    }]
}

Étapes suivantes