首页 > 解决方案 > 是否可以让 Azure AD B2C 在对自定义声明 REST API 的调用中包含 aud?

问题描述

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

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

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

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

我会以错误的方式解决这个问题吗?有没有更好的方法来实现这一点?

标签: azureazure-ad-b2cclaims

解决方案


您可以为此使用索赔解析器

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

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

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

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

推荐阅读