【问题标题】:Adding custom claims to JWT from an external API using Azure AD使用 Azure AD 从外部 API 向 JWT 添加自定义声明
【发布时间】:2023-04-10 06:20:02
【问题描述】:

除了添加可选声明之外,还有其他方法可以向 JWT(访问令牌)添加自定义声明吗?

我们的情况是我们收到来自外部客户端的请求,这些请求带有由受信任方签署的访问令牌。我们需要验证令牌,然后在将请求路由到受保护的 API 之前添加一些额外的声明。额外声明的值需要从外部 API 获取,因此无法在 Token 配置设置中使用提供的“可选声明”。

有谁知道 Azure AD 是否可以做到这一点?我们已经能够使用 IdentityServer 来做到这一点,这当然是非常灵活的。但是,如果只将 Azure AD 作为我们的 IDP/STS 来简化我们的架构/设计,那就太好了。

【问题讨论】:

    标签: api azure-active-directory jwt claims


    【解决方案1】:

    您可以customize claims emitted in tokens for a specific app in a tenant。 (这是使用 PowerShell cmdlet)

    这是使用 Microsoft Graph 的另一种方式:

    1. 创建一个extensionProperty

    2. 更新用户的扩展属性。

    3. 创建一个claimsMappingPolicy

    4. 将 claimMappingPolicy 分配给 servicePrincipal。这里的 servicePrincipal 是代表受 AAD 保护的 API 的企业应用程序。

    5. 在 API 应用注册的清单文件中。将acceptMappedClaims 设置为true,将accessTokenAcceptedVersion 设置为2。

    之后,您可以在 JWT 令牌中获取自定义声明。

    详情见我的previous answer

    【讨论】:

    • 谢谢。我没有看到如何动态设置从这些步骤调用外部 REST API 的自定义声明的值?具体要求是验证不记名令牌,然后使用自定义签名密钥“重新发布”带有附加声明的访问令牌。 (将使用datatracker.ietf.org/doc/html/rfc7523,即使用 OAuth 2.0 客户端身份验证和授权授予框架的断言框架)
    猜你喜欢
    • 2020-03-15
    • 1970-01-01
    • 2019-06-24
    • 2018-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-14
    相关资源
    最近更新 更多