c# - ADAL 在网络服务器上循环

标签 c# asp.net-mvc iis azure adal

我正在创建一个使用 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.

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

我不知道该去哪里寻找。您知道原因是什么吗?

最佳答案

我们在时发现了这个问题

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

这里有一个建议的修复:

https://github.com/AzureADSamples/WebApp-OpenIDConnect-DotNet/wiki/The- 'nonce'-在 jwt token 中发现与预期的随机数不匹配

关于c# - ADAL 在网络服务器上循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26677772/

相关文章:

c# - 在 ASP.NET mvc5 项目中集成 google analytics api

c# - 在 .NET 中解析 URI

c# - 如何在 xaml 中将字符串转换为 Uri?

javascript - 检查 JValue 字符串在 AngularJS 中是否有值

c# - 从类名中获取模型元数据

c# - 添加自定义请求 header 适用于 IIS 7.0 但不适用于 Asp.net 开发服务器

c# - 在 C# 中找出两个日期的差异

asp.net - 使用数据库优先将 ASP.NET SQL 成员身份迁移到 ASP.NET 标识

当另一个 HTML 页面向其提交表单时,HTML 页面抛出 405 错误

仅当 IIS 设置为需要 SSL 时,Java Applet 才需要身份验证