J'ai une application Azure ad et j'essaie d'ajouter des revendications personnalisées à un JWT. J'utilise la fonctionnalité de mappage des réclamations dans Azure pour mon application spécifique et j'ai mis à jour le manifeste de l'application dans le portail Azure pour inclure les revendications facultatives. Cependant, lorsque je vous connecte et affiche le jeton d'accès décodé, la réclamation n'est pas présente dans le jeton. Je n'ai pas trouvé beaucoup de documentation relative à l'utilisation d'attributs d'extension comme des revendications, mais de ce que j'ai trouvé, il devrait suivre les mêmes schémas, mais cela ne fonctionne pas comme prévu.
Comment ajouter une réclamation personnalisée provenant d'une propriété personnalisée dans l'objet utilisateur dans AD, à un JWT lorsque l'utilisateur se connecte?
Merci d'avance!
Demande:
POST https://graph.windows.net/mytenant.onmicrosoft.com/applications/<application-object-id>/extensionProperties?api-version=1.5
Corps:
{
"name": "customUserRoles",
"dataType": "String",
"targetObjects": ["User"]
}
Demande:
PATCH https://graph.windows.net/mytenant.onmicrosoft.com/users/[email protected]?api-version=1.5
Corps:
{
"extension_<appId>_customUserRoles": "My Custom Role 1, Another Role 2"
}
Install-Module -Name AzureADPreview
New-AzureADPolicy -Definition @('{"ClaimsMappingPolicy":{"Version": 1, "IncludeBasicClaimSet": "true", "
ClaimsSchema": [ { "Source": "user", "ID": "extension_<appId>_customUserRoles", "JwtClaimType": "customUserRoles" } ] } }') -DisplayName "customUserRoles" -Type "ClaimsMappingPolicy"
Add-AzureADServicePrincipalPolicy -Id <service-principla-id> -RefObjectId <Azure-ad-policy-id>
{
...
"acceptMappedClaims: true,
"optionalClaims": {
"idToken": [
{
"name": "extension_<appId>_customUserRoles",
"source": "user",
"essential": false,
}
],
"accessToken": [
{
"name": "extension_<appId>_customUserRoles",
"source": "user",
"essential": false,
}
],
"samlToken": []
}
}
https://login.microsoftonline.com/mytenant.onmicrosoft.com/oauth2/authorize?client_id=<appId>&response_type=token&resource=https://mytenant.sharepoint.com
et connectez-vous avec un compte d'utilisateur AZURE AD [email protected]
access_token
paramètrehttps://jwt.ms
et coller le jeton d'accès dans la zone de texteMon attente est que je devrais voir une nouvelle revendication appelée customUserRoles
ou extn.customUserRoles
dans le jeton décodé.
Quelles mesures je manque? Je n'ai pas eu d'erreurs tout au long de ce processus, mais cela ne semble pas fonctionner car la documentation suggère.
J'ai lu la documentation de Microsoft sur ces sujets:
Réclamations facultatives: https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-Optional-claims
CARNEMENT DE RÉCLAMATION: https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-Claims-mapping
J'ai également lu sur divers postes de forum et articles de blog en relatif à ceci:
https://devonblog.com/cloud/azure-ad-adding-employeid-claims-in-azure-ad-jwt-Token/
Basé sur - ce fonctionnaire doc:
Les jetons d'accès sont toujours générés à l'aide du manifeste de la ressource, pas du client. Donc, dans la demande ... Scope = https://graph.microsoft.com/user.read ... La ressource est graphique. Ainsi, le jeton d'accès est créé à l'aide du manifeste graphique, et non du manifeste du client. Changer le manifeste pour votre application ne causera jamais de jetons de graphique pour avoir l'air différent. Afin de valider que vos modifications accessibles sont en vigueur, demandez un jeton pour votre application, pas une autre application.
Et en fonction de vos besoins, il est impossible si vous souhaitez modifier un jeton d'accès que la ressource est SharePoint Online qui est une application multi-locataires créée et gérée par MSFT.
Pour ce doc , j'ai aussi fait des recherches pour vous. Et le même, vous devriez avoir le contrôle de l'application latérale de service afin que vous puissiez faire cela arriver.
Ceci est ma commande de mission de rôle de politique:
$nsp = New-AzureADPolicy -Definition @('{"ClaimsMappingPolicy":{"Version":1,"IncludeBasicClaimSet":"true", "ClaimsSchema": [{"Source":"user","ID":"mailnickname","JwtClaimType":"testclaim"}]}}') -DisplayName "StanCustomCliamDemo_surname" -Type "ClaimsMappingPolicy"
Add-AzureADServicePrincipalPolicy -RefObjectId $nsp.Id -Id '<obj id of service side app>'
De plus, PLS Notez que extension_<appId>_customUserRoles
N'est-ce pas un identifiant de source utilisateur valide. Pour tous les identifiants de source utilisateur valides, les pls se réfèrent à ici .
J'espère que ça aide .