在对自定义声明REST API的调用中包括Azure AD B2C aud声明

时间:2020-01-03 16:22:13

标签: azure azure-ad-b2c claims

TL; DR: {OIDC:ClientId}始终是调用应用程序。我还需要了解“受众”应用程序。是否有索赔解决程序?

详细信息:

问题出在这里

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

我已经考虑过使用{OIDC:scopes}声明解析程序来解决此问题。这可能有效,但似乎有点像hack。有更好的选择吗?

1 个答案:

答案 0 :(得分:0)

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

{OIDC:scopes}是一个字符串,所有请求的范围用空格分隔。要检测何时为不同于当前应用程序的应用程序生成访问令牌,只需在scope字段上进行简单的字符串搜索即可。如果范围字符串中存在应用程序的应用程序ID URI,则正在请求该应用程序的访问令牌。