【问题标题】:IDX21323: RequireNonce is '[PII is hidden]'. OpenIdConnectProtocolValidationContext.Nonce was null, ValidatedIdToken.Payload.Nonce was not nullIDX21323:RequireNonce 是“[PII 已隐藏]”。 OpenIdConnectProtocolValidationContext.Nonce 为空,ValidatedIdToken.Payload.Nonce 不为空
【发布时间】:2021-09-28 02:16:54
【问题描述】:

我有一个 ASSP.NET MVC Web 应用程序MyWebApp,它不允许匿名访问任何页面。配置了IdentityServer4,一旦用户尝试打开MyWebApp,他就会被重定向到 IdentityServer 登录页面。 (混合流) 用户没有登录并在该 IdentityServer 登录页面上停留足够长的时间,因此 MyWebApp 上的 Nonce cookie 过期(默认生命周期为 15 分钟)。 如果他继续在 IdentityServer 中登录(成功)并被重定向回MyWebApp,他会收到以下错误:

Microsoft.IdentityModel.Protocols.OpenIdConnect.OpenIdConnectProtocolInvalidNonceException IDX21323:RequireNonce 是“[PII 已隐藏]”。 OpenIdConnectProtocolValidationContext.Nonce 为空, OpenIdConnectProtocol.ValidatedIdToken.Payload.Nonce 不为空。这 nonce 无法验证。如果您不需要检查随机数,请设置 OpenIdConnectProtocolValidator.RequireNonce 为“假”。请注意,如果 找到'nonce',它将被评估。

但由于用户在 IdentityServer 中成功通过身份验证,当他再次尝试访问 MyWebApp 时,他会被重定向到 IdentityServer 并返回到 MyWebApp,而无需再次输入用户名/密码。然而,最初的错误很烦人。当“登录”流程开始并且用户“AFK”足够长的时间以致“Nonce”cookie 过期并且他无法完成最终验证时,任何人都遇到过这样的问题吗?处理这种情况的好方法是什么?

提前致谢!

【问题讨论】:

    标签: asp.net-mvc identityserver4 openid-connect nonce


    【解决方案1】:

    在 OpenIdConnectAuthenticationNotifications 中,您可以捕获错误并继续下一个中间件:

    AuthenticationFailed = (context) =>
                    {
                        if (context.Exception.Message.Contains("IDX21323"))
                        {
                            context.SkipToNextMiddleware();
                            return Task.FromResult(0);
                        }
                        return Task.FromResult(0);
    

    如果我记得,IDS3 需要随机数,但 IDS4 不需要

    【讨论】:

    • openiddict 呢?
    【解决方案2】:

    我只是更新了我的 Microsoft.Owin.Security.OpenIdConnect 包以匹配我的其他 OWin 包上的版本号。

    Microsoft.Owin [4.1.1]
    Microsoft.Owin.Security [4.1.1]
    Microsoft.Owin.Security.Cookies [4.1.1]
    

    ,错误消失了。

    【讨论】:

      猜你喜欢
      • 2021-11-10
      • 1970-01-01
      • 2019-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多