我在 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:仅“单页应用程序”允许跨域令牌赎回
最奇怪的是:
- Production Client App 可以从公网(Internet)获取Token,但不能在内网获取Token(可以访问Internet)
- UAT 客户端应用程序从公共和内部网络(具有 Internet 访问权限)生成令牌。
有了这样的事实,说生产消费者站点存在网络限制是不合理的。我不知道为什么 App 不在内部网络中而是在公共网络中生成令牌,而 UAT 应用程序在生成令牌方面没有问题,无论环境如何。
这个案例几乎详细说明了我的案例,但我检查了我的案例,其中客户端应用程序是公共的,服务器应用程序是私有的。
在哪里搜索?要看哪些方面?