2

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

生产服务器应用程序几乎是 UAT 服务器应用程序的克隆。生产客户端应用程序几乎是 UAT 客户端应用程序的克隆。

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

在生产客户端应用程序上,从 Token 端点检索 Token 时返回错误,它读取为:

AADSTS9002326:仅“单页应用程序”允许跨域令牌赎回

最奇怪的是:

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

有了这样的事实,说生产消费者站点存在网络限制是不合理的。我不知道为什么 App 不在内部网络中而是在公共网络中生成令牌,而 UAT 应用程序在生成令牌方面没有问题,无论环境如何。

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

在哪里搜索?要看哪些方面?

4

1 回答 1

4

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

于 2021-09-09T11:00:23.227 回答