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
- Découvrez comment obtenir un locataire Microsoft Entra.
- Téléchargez la dernière version du Kit de développement logiciel (SDK) de Microsoft Graph PowerShell.
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 :
- Omettre les revendications de base dans les jetons
- Inclure EmployeeID et TenantCountry comme des revendications dans les jetons
- Utiliser une transformation de revendications dans les jetons
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.
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.
À 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"
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.
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.
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"
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.
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.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"
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.
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.
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
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>"}