从 Azure AD 生成令牌失败并出现错误 AADSTS9002326

hiF*_*iFI 3 azure oauth-2.0 azure-active-directory bearer-token clientcredential

我已在 Azure AD 中注册了两个应用程序;一套是服务器,一套是客户端。创建了两组;一套用于生产,另一套用于 UAT。客户端应用程序是“Web”类型,没有一个是 SPA。

生产服务器应用程序几乎是 UAT 服务器应用程序的克隆。Production Client App 几乎是 UAT Client 应用程序的克隆。

消费者使用客户端应用程序通过使用 OAuth 2.0 令牌端点 (v2) https://login.microsoftonline.com/[--Tenant--]/oauth2/v2.0/token作为带有密钥的客户端凭据流来获取令牌。生成的令牌用作不记名令牌来授权我的 Web API。

在生产客户端应用程序上,从令牌端点检索令牌时会返回错误,其内容如下:

AADSTS9002326:仅允许“单页应用程序”进行跨域令牌兑换

这里奇怪的是:

  1. 生产客户端应用程序可以从公共网络(互联网)获取Token,但不能从内部网络(有互联网访问权限)获取Token
  2. UAT 客户端应用程序从公共和内部网络(具有互联网访问权限)生成令牌。

考虑到这些事实,说生产消费者站点存在网络限制是不合理的。我不明白为什么应用程序不在内部网络中而是在公共网络中生成令牌,而无论环境如何,UAT 应用程序在生成令牌时都没有问题。

这个案例几乎详细阐述了我的案例,但我检查了我的案例,其中客户端应用程序是公共的,服务器应用程序是私有的。

去哪里寻找?需要关注哪些领域?

sel*_*ted 7

如果其他人遇到此错误,请检查清单文件中的 URI 类型是否为Spa而不是Web。即使您已将身份验证中的平台设置为单页应用程序,URI 类型仍可能设置为 Web,这将导致此错误。