ASP.NET Core 3.1 MVC用HTTP配置Azure AD认证遇关联失败错误求助
解决方案建议
1. 调整OpenID Connect关联Cookie配置
在Configure<OpenIdConnectOptions>中修改关联Cookie的安全策略,允许HTTP环境下传输:
services.Configure<OpenIdConnectOptions>(AzureADDefaults.OpenIdScheme, options => { options.ResponseType = OpenIdConnectResponseType.CodeIdToken; options.Events.OnAuthorizationCodeReceived = OnAuthorizationCodeReceived; // 允许关联Cookie通过HTTP传输 options.CorrelationCookie.SecurePolicy = CookieSecurePolicy.None; options.CorrelationCookie.IsEssential = true; });
2. 全局Cookie策略适配HTTP
在ConfigureServices中添加全局Cookie策略配置:
services.Configure<CookiePolicyOptions>(options => { options.MinimumSameSitePolicy = SameSiteMode.Unspecified; options.Secure = CookieSecurePolicy.None; });
同时在Configure方法中,确保Cookie策略中间件在认证中间件之前启用:
app.UseCookiePolicy(); app.UseAuthentication(); app.UseAuthorization();
3. 验证Azure AD应用注册的回调URL
确认Azure AD应用注册里的重定向URI和前端通道注销URI与你的HTTP地址完全匹配,比如http://localhost:5000/signin-oidc、http://localhost:5000/signout-oidc,协议、域名、端口、路径必须一致。
4. 禁用HSTS强制跳转
如果应用启用了HSTS,会强制浏览器使用HTTPS,需在Configure方法中注释或移除相关代码:
// app.UseHsts(); // 注释此行
5. 检查运行环境配置
- 确保
appsettings.json中的AzureAD配置项(Domain、ClientId、TenantId)正确无误 - 确认
launchSettings.json里的applicationUrl设置为HTTP地址,比如http://localhost:5000
内容的提问来源于stack exchange,提问作者Piyush
相关产品推荐
相关产品推荐

