Asp.NET Core OIDC授权码流出现Correlation failed异常求助
Asp.NET Core OIDC Code流单点登录问题:Correlation failed异常与无限重定向循环
错误信息
顶级异常:
Exception: Correlation failed. Unknown location
异常来源:Microsoft.AspNetCore.Authentication.RemoteAuthenticationHandler<TOptions>.HandleRequestAsync()
原始异常:
System.Exception: Correlation failed.
问题现象
网站陷入以下三者的无限重定向循环:
- 网站回调地址:
signin-oidc?code=... - 需要授权的目标页面
- SSO授权地址:
authorize?client_id=...
排查与解决步骤
1. 验证Correlation Cookie配置
OIDC的Correlation机制依赖Cookie传递状态,需确保:
- 网站与SSO服务的域名/端口匹配,或已配置正确的Cookie跨域策略
CookiePolicyOptions中SameSite属性设为Lax或None(跨域场景),生产环境需启用Secure属性- 检查OIDC配置的
CorrelationCookie属性,确认路径、域名设置正确
2. 核对OIDC核心配置参数
- 确认
ClientId、ClientSecret与SSO服务端配置完全一致 - 回调地址
CallbackPath(默认/signin-oidc)必须在SSO服务的允许回调列表中,且路径大小写完全匹配 - 验证
ResponseType设置为code(符合Code流要求),SaveTokens设为true
3. 检查授权策略与路由规则
- 目标页面的
[Authorize]授权策略配置正确,避免因策略不匹配导致授权失败后重复重定向 - 排查路由规则是否冲突,确保回调地址能被OIDC中间件正确捕获处理
4. 启用认证日志定位问题
在appsettings.json中添加日志配置,查看Correlation ID的生成、传递与验证细节:
{ "Logging": { "LogLevel": { "Microsoft.AspNetCore.Authentication": "Debug" } } }
内容的提问来源于stack exchange,提问作者Nenad
相关产品推荐
相关产品推荐

