【发布时间】: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