【问题标题】:claims mapping of extension properties in access token in azure在 Azure 中声明访问令牌中的扩展属性映射
【发布时间】:2020-12-16 11:58:06
【问题描述】:

我能够使用声明映射将扩展属性添加到 id_token 中。有没有办法在访问令牌中做到这一点? (或者我唯一的选择是为此调用 Graph)?

【问题讨论】:

    标签: azure-web-app-service


    【解决方案1】:

    将 claimMappingPolicy 分配给代表客户端应用程序的 servicePrincipal 会将自定义声明添加到 id 令牌中。为了将自定义声明添加到访问令牌中,您需要将 claimMappingPolicy 分配给代表后端 API 的 servicePrincipal,就像您在客户端应用程序中所做的一样。

    查看此answer的详细步骤。

    请注意,它仅适用于您尝试调用受 AAD 保护的自己的 API 的场景。如果您正在调用 Microsoft Graph,则无法使其正常工作,因为无法从 Microsoft Graph 端配置 claimMappingPolicy。

    【讨论】:

    • 我在 Azure 中的无知会暴露出来,所以艾伦请多多包涵。我的组织有一堆给定用户的扩展属性..例如,当我执行
      Get-AzureADUser -ObjectId |选择 -ExpandProperty ExtensionProperty 我得到 extension_id1_businessdataattribute-1 extension_id1_businessdataattribute-2
      我的客户端应用程序 id 与 extension_id1 不同,但是当我对我的客户端应用程序服务主体进行声明映射时,我确实看到声明映射显示在 id 令牌上。我有自己的 API,它有自己的 appid(比如说 id3)。
    • 当我为我的 api (id3) 创建一个 claimMapping 并且声明映射引用 id1 ( {source =user, id="extenstion_id1_businessdata_1, jwtClaimtype="someclaim} ) 它没有显示在访问令牌上.它出现在客户端应用程序的 id 令牌上的事实让我认为这应该可行。我错了吗? (抱歉不得不添加两个 cmets)
    • @dish 根据您的描述,我认为您采取的步骤是正确的。但也许还有一些你错过的东西。您是否完全按照answer 中的步骤进行操作?创建 claimMappingPolicy 后,您需要将其分配给您的 api(id3)。您确定您使用的是正确的 api(id3) 对象 ID 吗?我有一些关于如何在该答案中找到它的屏幕截图。
    • @dish 并且不要忘记配置您的 api(id3) 的应用注册清单文件。如果还是不行,请分享完整的请求(包括请求正文)关于如何获取访问令牌。
    • 我有一个 powershell 设置来创建一个声明映射策略,我使用$appID = "cleintId of the API" $policyName = "NameOfThePolicy" #service principal of the API $sp = Get-AzureADServicePrincipal -Filter "servicePrincipalNames/any(n: n eq '$appID')" 获得一个服务主体然后发出这个$policy = New-AzureADPolicy -Type "ClaimsMappingPolicy" -DisplayName $policyName -Definition ($claimsMappingPolicy) Add-AzureADServicePrincipalPolicy -Id $sp.ObjectId -RefObjectId $policy.Id
    猜你喜欢
    • 1970-01-01
    • 2018-12-31
    • 1970-01-01
    • 2020-01-16
    • 2018-05-18
    • 2018-02-07
    • 1970-01-01
    • 2020-09-09
    • 1970-01-01
    相关资源
    最近更新 更多