远程身份验证提供程序的 AuthenticationAsync
远程身份验证提供程序(如 OpenIdConnect、WsFederation 和 OAuth)已更新,以避免在请求中没有可用用户信息时出现不必要的错误。
引入的版本
.NET 7
旧行为
之前,当在远程身份验证提供程序上调用 AuthenticateAsync 并且没有当前用户时,调用失败并出现类似于 OpenIdConnect was not authenticated. Failure message: Not authenticated
的消息。
新行为
从 .NET 7 开始,AuthenticateAsync 返回匿名标识 AuthenticateResult.NoResult()。
中断性变更的类型
此项更改可能会影响二进制兼容性。
更改原因
旧行为:
- 与返回 AuthenticateResult.NoResult() 的
Cookie
和Negotiate
身份验证不一致。 - 导致故障日志过多,尤其是在将远程身份验证处理程序设置为默认处理程序并在每个请求中调用时。
建议操作
如果有直接调用 AuthenticateAsync 的代码,请对其进行检查,以确保其正确处理 AuthenticateResult.NoResult() 和匿名或空的 ClaimsIdentity 实例。