【问题标题】:400 invalid id token for Azure AD when ASP.net core app is deployed in Azure在 Azure 中部署 ASP.net 核心应用程序时,Azure AD 的 400 无效 id 令牌
【发布时间】: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


【解决方案1】:

当我在 Azuer App 服务中托管我的 .net Web 应用程序时,我遇到了同样的问题。 转到应用服务->打开您的应用程序->转到身份验证/授权->关闭应用服务身份验证。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-24
    • 2018-11-29
    • 1970-01-01
    • 2016-11-20
    • 2022-11-10
    • 2020-03-03
    • 2023-03-19
    • 2018-03-29
    相关资源
    最近更新 更多