OpenIdConnectProtocolInvalidNonceException。用户仍然可以在 AuthenticationFailed 通知上进行身份验证吗?
OpenIdConnectProtocolInvalidNonceException. Can the user still be authenticated on AuthenticationFailed notification?
是否存在用户可以拥有过期随机数异常 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 通知上。
在使用过期随机数异常进行调试时,我总是得到 n.OwinContext.Authentication.User.Identity.IsAuthenticated = false
。
这个if
语句没用吗?
在这个主题上花了一些时间后,我发现用户已经通过身份验证但得到 OpenIdConnectProtocolInvalidNonceException
的情况是当用户在成功登录后单击浏览器中的后退按钮时。在这种情况下,用户已通过身份验证但随机数丢失。
是否存在用户可以拥有过期随机数异常 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 通知上。
在使用过期随机数异常进行调试时,我总是得到 n.OwinContext.Authentication.User.Identity.IsAuthenticated = false
。
这个if
语句没用吗?
在这个主题上花了一些时间后,我发现用户已经通过身份验证但得到 OpenIdConnectProtocolInvalidNonceException
的情况是当用户在成功登录后单击浏览器中的后退按钮时。在这种情况下,用户已通过身份验证但随机数丢失。