【发布时间】:2020-09-28 14:25:56
【问题描述】:
我在 Azure 中托管了我的 ASP.net 核心 Web 应用程序,并且我正在使用 Azure AD 授权来读取角色,如 here 所示。我在托管应用程序中收到 400 个无效的 id 令牌用于回调。在 chrome 控制台中,我只看到此错误消息。我也可以在网络选项卡的回调中看到 id_token。但是,如果我在将重定向 url 更改为 localhost 后在本地机器上运行与 localhost 相同的代码,我不会遇到任何问题,并且我能够读取角色等。所以我相信我的代码很好。运行托管应用程序时出现无效 id 令牌错误的原因可能是什么。如何排除故障。
【问题讨论】:
-
两种可能 1) 你在每台机器上都有不同的默认浏览器。HTTP 有一个标头用户代理 (developer.mozilla.org/en-US/docs/Web/HTTP/Headers/User-Agent) 并且服务器不喜欢用户代理 2) TLS 身份验证版本错误。要么您指定了错误的版本,要么您使用的 Windows 版本使用的默认值与服务器使用的不同。5 年前,由于安全问题,行业决定消除 TLS 1.0/1,1。微软在 6 月推出了一项安全更新,以禁用 1.0/1.1 并要求服务器上安装 1.2/1.3。您必须修改客户端才能工作。
-
我已经从同一个浏览器和同一台机器本身访问了 localhost 应用程序和托管应用程序。所以我不确定是什么导致了这个问题。应用服务中的最低 TLS 版本设置为 1.2,我也尝试更改此版本,但不走运。还有什么我需要检查的
-
使用像 wireshark 或 fiddler 这样的嗅探器,比较好和坏的嗅探器结果。检查 TLS 的版本并检查第一个请求中的标头。您可能需要添加或检查标头才能使代码正常工作。
-
@jdweng 我使用 Azure Active Directory(express) 设置启用了应用服务身份验证。我在门户中禁用了应用服务身份验证,现在我可以读取用户角色而不会出现上述问题。所以我怀疑我在做什么是错的?使用用户角色时是否需要启用身份验证?
-
我在 githup 上看了源码。该代码继承了标准的网络库控制器。如果看起来有很多选择。检查所有组合的配置文件和文件 Startup.cs。
标签: c# azure asp.net-core oauth-2.0