网络服务器上循环中的ADAL

本文关键字:ADAL 循环 网络服务 服务器 网络 | 更新日期: 2023-09-27 18:28:41

我正在创建一个使用Azure Active Directory身份验证库作为身份验证提供商的网站。我遵循本教程在我的开发环境中建立了一个工作环境。

https://github.com/AzureADSamples/WebApp-OpenIDConnect-DotNet

到目前为止一切都很顺利。我能够使用租户用户进行身份验证。因为您必须对所有页面进行身份验证,所以我对所有控制器使用[授权]属性。我使用web.config文件中的不同设置将同一应用程序发布到web服务器。我创建了两个应用程序:"应用程序测试"answers"应用程序"。

当该网站正在运行时,多个用户可以使用自己的azure租户凭据登录。过了一段时间,一些用户在尝试登录该网站时陷入了循环。Web服务器在事件日志中给出以下错误:

异常类型:OpenIdConnectProtocolInvalidNonceException

异常消息:IDX10301:jwt令牌中发现的"nonce"确实存在与预期的nonce不匹配。

当我重新启动应用程序池并重新启动网站时,用户可以再次登录。有一段时间。。。

我不知道该往哪里看。你知道可能是什么原因吗?

网络服务器上循环中的ADAL

我们在

  1. 在一个选项卡上启动登录
  2. 当提示输入U/P时,打开一个新选项卡并浏览到站点
  3. 从"新"选项卡开始登录
  4. 当提示输入U/P时,切换回上一个选项卡
  5. 在上一个选项卡上完成登录
  6. 你应该看到一个错误

这里有一个建议的解决方案:

https://github.com/AzureADSamples/WebApp-OpenIDConnect-DotNet/wiki/The-在jwt令牌中找到的"nonce"与预期的nonce 不匹配

我知道这有点旧,但增加了2美分。Brent Schmaltz提出的解决方案应该解决nonce问题。然而,这也可能与OWIN中间件中的一个错误有关。简言之OWIN中间件设置的cookie有时会消失。我们已经使用Kentor.OwinCookieSaver.解决了这个问题