在对自定义声明 REST 的调用中包含 Azure AD B2C 音频声明 API

Include Azure AD B2C aud claim in call to custom claim REST API

TL;DR: {OIDC:ClientId} 始终是调用应用程序。我还需要了解 "audience" 应用程序。是否有针对此的索赔解决程序?

更详细:

这是问题所在:

  1. 应用程序 A 和应用程序 B 都在同一个 Azure AD B2C 租户中注册。
  2. 一个单独的 REST API(我们称之为 "claims API")将自定义声明提供给 Azure AD B2C 令牌。这些声明必须根据 使用 令牌的应用程序而有所不同。
  3. 我使用 {OIDC:ClientId} 声明解析器将请求应用程序的 clientId 发送到声明 API,如 .
  4. 当应用程序 A 请求应用程序 B 的访问令牌时,声明 API 收到应用程序 A 的客户端 ID。但是,我需要加载应用程序 B 的声明,因为这是实际使用的应用程序令牌。所以问题是,如何获得目标应用程序和请求应用程序的 clientID?

我考虑过使用 {OIDC:scopes} 声明解析器来解决这个问题。这可能行得通,但看起来有点像 hack。有没有更好的选择?

Per this document,似乎 {OIDC:scopes} 是唯一可用的选项。经过进一步思考,这是有道理的,因为可能会请求当前租户之外的某些范围(例如,Microsoft Graph API)。在这种情况下,将无法为目标应用程序提供 clientId。

{OIDC:scopes} 是一个字符串,所有请求的范围都用空格分隔。要检测何时为与当前应用程序不同的应用程序生成访问令牌,在范围字段上进行简单的字符串搜索就足够了。如果应用程序的 App ID URI 出现在范围字符串中,则正在为该应用程序请求访问令牌。