我正在创建一个使用 Azure Active Directory 身份验证库作为身份验证提供程序的网站。我按照本教程在我的开发环境中建立了工作环境。
https://github.com/AzureADSamples/WebApp-OpenIDConnect-DotNet
到目前为止,一切进展顺利。我可以使用租户用户进行身份验证。因为您必须对所有页面进行身份验证,所以我对所有 Controller 使用 [Authorize] 属性。我使用 web.config 文件中的不同设置将相同的应用程序发布到网络服务器。我确信我创建了 2 个应用程序:“Apps Test”和“Apps”。
当站点正在运行时,多个用户可以使用自己的 Azure 租户凭据登录。现在过了一段时间,一些用户在尝试登录该网站时陷入了循环。网络服务器在事件日志中给出以下错误:
Exception type: OpenIdConnectProtocolInvalidNonceException
Exception message: IDX10301: The 'nonce' found in the jwt token did not match the expected nonce.
当我重新启动应用程序池并重新启动站点时,用户可以再次登录。有一段时间...
我不知道该去哪里寻找。您知道原因是什么吗?
最佳答案
我们在时发现了这个问题
- 在一个选项卡上启动登录
- 当提示输入 U/P 时,打开一个新选项卡并浏览到该网站
- 从新标签页开始登录
- 当提示输入 U/P 时,切换回上一个选项卡
- 在上一个选项卡上完成登录
- 您应该看到一个错误。
这里有一个建议的修复:
https://github.com/AzureADSamples/WebApp-OpenIDConnect-DotNet/wiki/The- 'nonce'-在 jwt token 中发现与预期的随机数不匹配
关于c# - ADAL 在网络服务器上循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26677772/