【问题标题】:Is it possible to get Azure AD B2C to include the aud in calls to custom claims REST API?是否可以让 Azure AD B2C 在对自定义声明 REST API 的调用中包含 aud?
【发布时间】:2019-11-03 15:34:00
【问题描述】:

我按照https://docs.microsoft.com/en-us/azure/active-directory-b2c/active-directory-b2c-custom-rest-api-netfw 中的描述设置了我的 Azure AD B2C 自定义声明 REST API,并且按照描述的方式工作。

我想为多个应用程序使用相同的 API,而不是为每个应用程序构建一个 API 端点(并且必须复制大部分 XML 配置)。是否可以让 Azure B2C 在访问 API 时包含 aud 值,以便我可以提供适用于请求它们的应用程序的声明?它在最终返回的令牌中,所以我假设它是可访问的。

我查看了 TrustFrameworkBase 中定义的声明类型,它们似乎都与作为令牌的一部分返回的 aud 值不匹配。

我能够返回给定用户的自定义声明,但我希望能够将其过滤到给定用户的自定义声明,用于他们正在验证的应用程序。

我是不是走错了路?有没有更好的方法来做到这一点?

【问题讨论】:

    标签: azure azure-ad-b2c claims


    【解决方案1】:

    您可以为此使用a claims resolver

    首先,声明一个 applicationId(或类似的)声明类型:

    <ClaimType Id="applicationId">
      <DisplayName>Application Identifier</DisplayName>
      <DataType>string</DataType>
    </ClaimType>
    

    然后在 REST API 技术配置文件中,使用 {OIDC:ClientId} 声明解析器引用此 applicationId 声明:

    <InputClaim ClaimTypeReferenceId="applicationId" DefaultValue="{OIDC:ClientId}" AlwaysUseDefaultValue="true" />
    

    【讨论】:

    • 谢谢!这正是我想要的。
    • 看来 {OIDC:ClientId} 始终是授权方。如果 API A 请求访问令牌以访问 API B,两者都使用自定义声明,则 {OIDC:ClientId} 始终是 API A 的 ID。任何无需检查 {OIDC:scope 即可获取 API B 的 ID 的方法}?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-28
    相关资源
    最近更新 更多