客户端和API都无法为Azure应用生成令牌(客户端凭据工作流)

时间:2020-09-07 09:19:47

标签: oauth-2.0 azure-active-directory

我们无法为同时提供API并充当其他应用程序客户端的应用程序生成令牌。我们想在OAuth中使用客户端凭据工作流程。

应用程序ApiAndClient具有客户端凭据以及使用应用程序ApiApp的api的权限。 我们授予ApiAndClient应用程序管理员同意使用ApiApp的api的权限。 我们在ApiApp中配置了重定向URI。 当我们要为ApiAndClient发行令牌时,出现以下错误消息:

{
  "error": "invalid_request",
  "error_description": "AADSTS501461: AcceptMappedClaims is only supported for a token audience matching the application GUID or an audience within the tenant's verified domains. Either change the resource identifier, or use an application-specific signing key.\r\nTrace ID: XXXXX\r\nCorrelation ID: XXXXXXXXX\r\nTimestamp: 2020-09-04 07:40:31Z",
  "error_codes": [
    501461
  ],
  "timestamp": "2020-09-04 07:40:31Z",
  "trace_id": "XXXXXX",
  "correlation_id": "XXXXXX"
}

我们将ApiAndClient和ApiApp的设置与令牌可以使用的其他应用进行了比较。 ApiApp有一个区别,它的“ acceptMappedClaims”设置为true,其他api应用程序设置为null。如果将其设置为null,则错误消息将更改:

"AADSTS50146: This application is required to be configured with an application-specific signing key. It is either not configured with one, or the key has expired or is not yet valid.\r\nTrace ID: xxxxxx\r\nCorrelation ID: xxxxxxx\r\nTimestamp: 2020-09-04 08:15:26Z",

将其设置为false不会更改任何内容。

我们怀疑,可能还充当api的客户端应用可能是问题所在。

2 个答案:

答案 0 :(得分:2)

acceptMappedClaims保持为真。

现在ApiAndClient也用作API应用,您应点击公开API ,然后设置应用ID URI,该ID将作为租户的已验证域。

enter image description here

答案 1 :(得分:0)

有一个完全不同的问题,我可以和一些广告专家一起解决。

我们在广告中使用自定义声明。因此,应用程序范围必须以经过验证的域(https://companyname.com/)开头。 否则,不会生成令牌。现在,我对其进行了更改,可以生成令牌。