gpt4 book ai didi

azure - 当范围不是 Azure AD 中的图形 API 时,如何添加自定义声明并检索相同的声明作为 access_token 的一部分?

转载 作者:行者123 更新时间:2023-12-02 07:57:20 25 4
gpt4 key购买 nike

我创建了一个 Azure AD Web 应用程序。现在我正在使用以下 API 获取我的 access_token,

发布https://login.microsoftonline.com/{目录(租户)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

响应看起来像,

"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"

现在,我将 access_token 传递给使用相同 Azure AD 客户端配置的第三方应用程序。现在,第三方期望名为 "policy":"readwrite" 的自定义声明作为 access_token 的一部分传递。我怎样才能达到同样的效果?

最佳答案

请引用以下步骤(为了节省时间,您可以在Microsoft Graph Explorer中进行Microsoft Graph操作。):

Create an extensionProperty (您可以在此处使用新创建的 Azure AD 应用程序):

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

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

它将生成一个名为 extension_{Azure AD 应用程序的客户端 ID}_policy 的扩展属性。

其次,您可以更新帐户的扩展程序属性:

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

{"extension_6d8190fbf1fe4bc38a5a145520221989_policy":"readwrite"}

然后create a claimsMappingPolicy :

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}

Assign the claimsMappingPolicy到服务主体。 请注意,此处的 servicePrincipal 是代表您的第三方应用程序的企业应用程序。在您的情况下,它是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}"}

您可以从 Azure Portal -> Azure Active Directory -> 应用注册 -> 找到您的第三方 Azure AD 应用找到 servicePrincipal -> 概述 -> 单击其关联服务主体的名称。

enter image description here

enter image description here

现在返回到第三方 Azure AD 应用程序的 list 文件。将 acceptMappedClaims 设置为 true,并将 accessTokenAcceptedVersion 设置为 2。

enter image description here

然后,当我们通过 ROPC 授权流程请求第三方应用程序的访问 token 时,我们可以获得自定义声明。

enter image description here

关于azure - 当范围不是 Azure AD 中的图形 API 时,如何添加自定义声明并检索相同的声明作为 access_token 的一部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63483491/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com