【问题标题】:OpenIdConnectProtocolInvalidNonceException. Can the user still be authenticated on AuthenticationFailed notification?OpenIdConnectProtocolInvalidNonceException。用户仍然可以在 AuthenticationFailed 通知上进行身份验证吗?
【发布时间】:2021-03-18 13:36:19
【问题描述】:

在任何情况下,用户可以拥有过期的 nonce 异常 OpenIdConnectProtocolInvalidNonceException 并且仍然可以通过身份验证?

我在我公司的源代码中发现了一个旧实现,以前的开发人员在 AuthenticationFailed 通知中实现了以下内容:

Notifications = new OpenIdConnectAuthenticationNotifications
{
        AuthenticationFailed = n =>
            {
               if(n.Exception is OpenIdConnectProtocolInvalidNonceException)
                  {    
                     // This is the confusing line
                     if(n.OwinContext.Authentication.User.Identity.IsAuthenticated)
                         {
                             n.SkipToNextMiddleware();
                             return Task.FromResult(0);
                          }
                  }
             }
     }

如您所见,if 声明 if(n.OwinContext.Authentication.User.Identity.IsAuthenticated) 让我有些困惑,因为我们实际上处于 AuthenticationFailed 通知中。

在使用过期的 nonce 异常进行调试时,我总是得到n.OwinContext.Authentication.User.Identity.IsAuthenticated = false

这个if 声明没用吗?

【问题讨论】:

    标签: c# asp.net owin openid-connect openid


    【解决方案1】:

    在这个话题上花了一些时间后,我发现用户已经通过身份验证但得到OpenIdConnectProtocolInvalidNonceException的情况是用户在成功登录后点击浏览器中的返回按钮。在这种情况下,用户已通过身份验证,但随机数丢失。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-13
      • 2018-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多