1

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

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

到目前为止,一切都运行良好。我能够使用租户用户进行身份验证。因为您必须对所有页面进行身份验证,所以我对所有控制器使用 [Authorize] 属性。我使用 web.config 文件中的不同设置将相同的应用程序发布到网络服务器。我天蓝色创建了 2 个应用程序:“应用程序测试”和“应用程序”。

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

异常类型:OpenIdConnectProtocolInvalidNonceException

异常消息:IDX10301:在 jwt 令牌中找到的“nonce”与预期的 nonce 不匹配。

当我重新启动应用程序池并重新启动站点时,用户能够再次登录。一阵子...

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

4

2 回答 2

1

当我们看到这个问题时

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

这里有一个建议的修复:

https://github.com/AzureADSamples/WebApp-OpenIDConnect-DotNet/wiki/The-'nonce'-found-in-the-jwt-token-did-not-match-the-expected-nonce _

于 2015-01-30T18:30:12.783 回答
0

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

于 2015-07-24T12:30:39.570 回答