我开发了一个本地工作版本的守护程序应用程序以保护API代码示例。 API 中的控制器受应用角色保护
MyAppReadAll
。
如果我在 API 的服务主体中启用用户登录,我可以从本地运行的守护进程 ASP.Net Core 控制台应用程序调用本地运行的 .NET 8.0 API,并获得预期的结果。我一定在设置中做了正确的事情,因为 API 收到的令牌具有正确的声明,包括应用程序角色。
本地测试后,我将 API 发布到应用服务,包括我们的 API 管理器 (APIM) 中的 API。当尝试访问 API 时,我得到两个不同的响应
在应用服务的“可用性和性能”选项卡中,我可以看到这两个错误都是由应用服务中的
FrontEnd
负载均衡器返回的。我认为这意味着请求永远不会到达网络工作者。
我在 APIM 中设置了一个 OAuth 服务器,它发送了带有错误
aud
声明的令牌,因此 401 是预期的。关于使用本地守护程序应用程序的 403 我没有任何线索。谁能提供一些关于这个问题的见解?
API App Service的网络是公开的,没有访问限制。
从本地控制台应用程序调用 API 时出现 403 错误的原因是应用程序服务启用了身份验证 (EasyAuth)。我们按惯例启用了 EasyAuth,但没有理解与身份平台的引入相结合的含义。我从这个GitHub问题评论
中得到了线索禁用 EasyAuth 解决了问题。