【发布时间】:2020-06-20 21:42:51
【问题描述】:
我有一个 ASP.NET 应用程序,它使用单独的身份提供程序(使用 OpenID Connect 协议)验证用户。
用户抱怨一个间歇性错误:
Microsoft.IdentityModel.Protocols.OpenIdConnect.OpenIdConnectProtocolInvalidNonceException:IDX21323:RequireNonce 是“[PII 已隐藏]”。 OpenIdConnectProtocolValidationContext.Nonce 为空,OpenIdConnectProtocol.ValidatedIdToken.Payload.Nonce 不为空。无法验证随机数。如果您不需要检查 nonce,请将 OpenIdConnectProtocolValidator.RequireNonce 设置为“false”。请注意,如果找到“nonce”,则会对其进行评估。
用户遇到此错误,然后发现他们是否再次尝试登录过程是否有效。
我可以通过启动登录过程来重现此错误,并在身份提供者页面上清除前缀为 OpenIdConnect.nonce. 的 cookie
错误消息建议将 OpenIdConnectProtocolValidator.RequireNonce 设置为 false。我认为这是一个不能令人满意的解决方案,因为它会使网站容易受到重放攻击。
网站是否有“最佳实践”方式来优雅地处理此错误?
【问题讨论】:
标签: asp.net-mvc openid-connect