Partage via


Personnaliser des revendications émises dans des jetons pour une application spécifique dans un locataire en utilisant la stratégie de mappage des revendications et PowerShell

Une revendication concerne ce qu’un fournisseur d’identité déclare sur un utilisateur dans le jeton qu’il émet sur cet utilisateur. Les administrateurs de locataire utilisent la personnalisation des revendications pour personnaliser les revendications émises dans des jetons pour une application spécifique au sein de leur locataire. Vous pouvez utiliser des stratégies de mappage de revendications pour effectuer les opérations suivantes :

  • sélectionner les revendications incluses dans les jetons ;
  • créer des types de revendications inexistants ;
  • choisir ou modifier la source des données émises dans des revendications spécifiques.

La personnalisation des revendications prend en charge la configuration des stratégies de mappage de revendications pour les protocoles SAML, OAuth et OpenID Connect.

Remarque

La stratégie de mappage des revendications remplace à la fois la stratégie des revendications personnalisées et la personnalisation des revendications proposées par le biais du centre d’administration Microsoft Entra. La personnalisation des revendications pour une application à l’aide de la stratégie de mappage des revendications signifie que les jetons émis pour cette application ignorent la configuration dans la stratégie des revendications personnalisées ou la configuration dans le panneau de personnalisation des revendications dans le centre d’administration Microsoft Entra.

Prérequis

Bien démarrer

Dans les exemples suivants, vous créez, mettez à jour, liez et supprimez des stratégies pour les principaux du service. Des stratégies de mappage des revendications peuvent être attribuées uniquement à des objets de principal du service.

Quand vous créez une stratégie de mappage de revendications, vous pouvez également émettre une revendication à partir d’un attribut d’extension d’annuaire dans des jetons. Utilisez ExtensionID pour l'attribut extension au lieu de l'ID dans l'élément ClaimsSchema. Pour plus d’informations sur les attributs d’extension, consultez Utiliser des attributs de l’extension d’annuaire.

Remarque

Le Kit de développement logiciel (SDK) de Microsoft Graph PowerShell est requis pour configurer des stratégies de mappage de revendications.

Ouvrez un terminal et exécutez la commande suivante pour vous connecter à votre compte Administrateur Microsoft Entra. Exécutez cette commande chaque fois que vous démarrez une nouvelle session.

Import-Module Microsoft.Graph.Identity.SignIns

Connect-MgGraph -Scopes "Policy.ReadWrite.ApplicationConfiguration", "Policy.Read.All"

Vous pouvez à présent créer une stratégie de mappage des revendications et l'affecter à un principal de service. Les exemples suivants présentent des scénarios courants :

Après avoir créé une stratégie de mappage des revendications, configurez votre application pour reconnaitre que les jetons contiendront des revendications personnalisées. Pour plus d'informations, lisez les considérations relatives à la sécurité.

Omettre les revendications de base dans les jetons

Dans cet exemple, vous créez une stratégie qui supprime l’ensemble de revendications de base dans les jetons qui sont envoyés aux principaux de service liés.

  1. Créez une stratégie de mappage de revendications. Cette stratégie, liée à des principaux du service spécifiques, supprime l’ensemble de revendications de base des jetons.

  2. À l'aide du terminal que vous avez ouvert, exécutez la commande suivante pour créer la stratégie :

    New-MgPolicyClaimMappingPolicy -Definition @('{"ClaimsMappingPolicy":{"Version":1,"IncludeBasicClaimSet":"false"}}') -DisplayName "OmitBasicClaims"
    
  3. Pour voir votre nouvelle stratégie, et pour obtenir la stratégie ObjectId, exécutez la commande suivante :

    Get-MgPolicyClaimMappingPolicy
    
    Definition                    DeletedDateTime Description DisplayName      Id
    ----------                    --------------- ----------- -----------      --
    {"ClaimsMappingPolicy":{..}}                              OmitBasicClaims  36d1aa10-f9ac...
    

Inclure les EmployeeID et TenantCountry comme créances dans les jetons

Dans cet exemple, vous créez une stratégie qui ajoute les jetons EmployeeID et TenantCountry délivrés aux principaux de service liés. EmployeeID est émis en tant que type de revendication de nom dans les jetons SAML et JWT. TenantCountry est émis en tant que type de revendication de pays/région dans les jetons SAML et JWT. Dans cet exemple, nous continuons à inclure les ensembles de revendications de base dans les jetons.

  1. Créez une stratégie de mappage de revendications. Cette stratégie liée à des principaux du service spécifiques ajoute les revendications EmployeeID et TenantCountry aux jetons.

  2. Pour créer la stratégie, exécutez la commande suivante dans votre terminal :

    New-MgPolicyClaimMappingPolicy -Definition @('{"ClaimsMappingPolicy":{"Version":1,"IncludeBasicClaimSet":"true", "ClaimsSchema": [{"Source":"user","ID":"employeeid","SamlClaimType":"http://schemas.xmlsoap.org/ws/2005/05/identity/claims/employeeid","JwtClaimType":"employeeid"},{"Source":"company","ID":"tenantcountry","SamlClaimType":"http://schemas.xmlsoap.org/ws/2005/05/identity/claims/country","JwtClaimType":"country"}]}}') -DisplayName "ExtraClaimsExample"
    
  3. Pour voir votre nouvelle stratégie, et pour obtenir la stratégie ObjectId, exécutez la commande suivante :

    Get-MgPolicyClaimMappingPolicy
    

Utiliser une transformation de revendications dans les jetons

Dans cet exemple, vous créez une stratégie qui émet une revendication personnalisée « JoinedData » pour des jetons JWT émis pour des principaux du service liés. Cette revendication contient une valeur créée en joignant les données stockées dans l'attribut extensionattribute1 sur l'objet utilisateur avec « -ext ». Dans cet exemple, nous excluons l’ensemble de revendications de base des jetons.

  1. Créez une stratégie de mappage de revendications. Cette stratégie, liée à des principaux de service spécifiques, émet une revendication JoinedData personnalisée sur les jetons.

  2. Pour créer la stratégie, exécutez la commande suivante :

    New-MgPolicyClaimMappingPolicy -Definition @('{"ClaimsMappingPolicy":{"Version":1,"IncludeBasicClaimSet":"true", "ClaimsSchema":[{"Source":"user","ID":"extensionattribute1"},{"Source":"transformation","ID":"DataJoin","TransformationId":"JoinTheData","JwtClaimType":"JoinedData"}],"ClaimsTransformations":[{"ID":"JoinTheData","TransformationMethod":"Join","InputClaims":[{"ClaimTypeReferenceId":"extensionattribute1","TransformationClaimType":"string1"}], "InputParameters": [{"ID":"string2","Value":"ext"},{"ID":"separator","Value":"-"}],"OutputClaims":[{"ClaimTypeReferenceId":"DataJoin","TransformationClaimType":"outputClaim"}]}]}}') -DisplayName "TransformClaimsExample"
    
  3. Pour voir votre nouvelle stratégie, et pour obtenir la stratégie ObjectId, exécutez la commande suivante :

    Get-MgPolicyClaimMappingPolicy
    

Attribuez une stratégie de mappage de revendications au principal de service

Pour attribuer une stratégie au prestataire de services, vous aurez besoin du ObjectId de votre stratégie de mappage de revendications et du numéro objectId du principal de service auquel la stratégie doit être attribuée.

  1. Pour consulter tous les principaux de service de votre organisation, vous pouvez envoyer une requête à l'API Microsoft Graph ou les vérifier dans Microsoft Graph Explorer.

  2. Pour afficher toutes les stratégies de mappage de revendications dans votre locataire et obtenir la stratégie ObjectId, exécutez la commande suivante :

    Get-MgPolicyClaimMappingPolicy
    
  3. Une fois que vous avez le ObjectId de votre stratégie de mappage des revendications et le principal de service, exécutez la commande suivante :

    New-MgServicePrincipalClaimMappingPolicyByRef -ServicePrincipalId <servicePrincipalId> -BodyParameter @{"@odata.id" = "https://graph.microsoft.com/v1.0/policies/claimsMappingPolicies/<claimsMappingPolicyId>"}