Azure AD'de kapsam Graph API olmadığında, özel bir talep nasıl eklenir ve erişim belirtecinin bir parçasıyla aynı şey nasıl alınır?

Aug 19 2020

Bir Azure AD web uygulaması oluşturdum. Şimdi access_token'ımı aşağıdaki API'yi kullanarak alıyorum,

İLETİ https://login.microsoftonline.com/{Directory (tenant) ID }/oauth2/v2.0/token

password:pass 
client_id:id
resource:https://graph.microsoft.com 
grant_type:password 
client_secret:secret 
sername:userName 
scope: https://rbsessence.onmicrosoft.com/0a7c94a0-0c4e-4f95-ba06-XXXX/.default

Cevap şöyle görünüyor:

"token_type": "Bearer",
    "scope": "https://rbsessence.onmicrosoft.com/0a7c94a0-0c4e-4f95-ba06-XXXXX/myTestRole https://rbsessence.onmicrosoft.com/0a7c94a0-0c4e-4f95-ba06-XXXXXX/user_impersonation https://rbsessence.onmicrosoft.com/0a7c94a0-0c4e-4f95-ba06-XXXXX/.default",
    "expires_in": 3599,
    "ext_expires_in": 3599, "access_token": "acessToken"

Şimdi access_token'i aynı Azure AD istemcisi ile yapılandırılmış bir üçüncü taraf uygulamasına geçiriyorum. Artık üçüncü taraf, adla özel bir talebin "policy":"readwrite"access_token'ın bir parçası olarak iletilmesini bekliyor. Aynı şeyi nasıl başarabilirim?

Yanıtlar

1 AllenWu Aug 20 2020 at 04:26

Lütfen aşağıdaki adımlara bakın (Microsoft Graph işlemini Microsoft Graph Explorer'da zaman kazanmak için yapabilirsiniz .):

ExtensionProperty oluşturun (burada yeni oluşturulmuş bir Azure AD uygulamasını kullanabilirsiniz):

Post https://graph.microsoft.com/v1.0/applications/{object id of the Azure AD application}/extensionProperties

{"name":"policy","dataType":"string","targetObjects":["User"]}

Adlı bir uzantı özelliği oluşturacaktır extension_{client id of the Azure AD application}_policy.

İkinci olarak, hesabınız için uzantı mülkünü güncelleyebilirsiniz:

Patch https://graph.microsoft.com/v1.0/me

{"extension_6d8190fbf1fe4bc38a5a145520221989_policy":"readwrite"}

Ardından bir ClaimMappingPolicy oluşturun :

Post https://graph.microsoft.com/v1.0/policies/claimsMappingPolicies

{"definition":["{\"ClaimsMappingPolicy\":{\"Version\":1,\"IncludeBasicClaimSet\":\"true\", \"ClaimsSchema\": [{\"Source\":\"user\",\"ExtensionID\":\"extension_6d8190fbf1fe4bc38a5a145520221989_policy\",\"JwtClaimType\":\"policy\"}]}}"],"displayName":"ExtraClaimsAllen1Example","isOrganizationDefault":true}

ClaimMappingPolicy öğesini bir servicePrincipal'e atayın . Lütfen buradaki servicePrincipal'in üçüncü taraf uygulamanızı temsil eden kurumsal uygulama olduğunu unutmayın. Senin durumunda öyle 0a7c94a0-0c4e-4f95-ba06-XXXX.

Post https://graph.microsoft.com/v1.0/servicePrincipals/{obeject id of the servicePrincipal which represents your third party application}/claimsMappingPolicies/$ref

{"@odata.id":"https://graph.microsoft.com/v1.0/policies/claimsMappingPolicies/{policy id from the previous step}"}

ServicePrincipal'i Azure Portal'dan bulabilirsiniz -> Azure Active Directory -> Uygulama kayıtları -> üçüncü taraf Azure AD uygulamanızı bulun -> Genel Bakış -> ilişkili hizmet sorumlusunun adına tıklayın.

Şimdi üçüncü taraf Azure AD uygulamasının bildirim dosyasına geri dönün. acceptMappedClaimsDoğru ve accessTokenAcceptedVersion2 olarak ayarlayın .

Ardından, ROPC hibe akışıyla üçüncü taraf uygulaması için bir erişim belirteci talep ettiğimizde, özel hak talebini alabiliriz.