ASP.NET Core MVC(.NET6) Azure AD认证:修正Redirect_URI的HTTP协议
解决ASP.NET Core MVC中Azure AD登录redirect_uri协议从HTTP强制改为HTTPS的问题
问题根源在于:部署在AWS Docker环境的ASP.NET Core应用,会从负载均衡接收HTTP请求;无痕模式下无会话缓存,框架无法识别前端真实请求协议,导致生成的redirect_uri使用HTTP协议,与Azure应用配置的HTTPS地址不匹配。以下是几种可行的解决方法:
方法1:配置ForwardedHeaders中间件(推荐)
AWS负载均衡会通过X-Forwarded-Proto头传递原始请求的协议信息,只需让应用信任这些转发头,即可正确识别真实请求协议。
在Program.cs中添加以下代码(需放在AddAuthentication相关配置之前):
builder.Services.Configure<ForwardedHeadersOptions>(options => { options.ForwardedHeaders = ForwardedHeaders.XForwardedProto; // 添加AWS负载均衡所在的可信IP段,可根据实际部署环境调整 options.KnownNetworks.Add(new IPNetwork(IPAddress.Parse("10.0.0.0"), 8)); options.KnownNetworks.Add(new IPNetwork(IPAddress.Parse("172.16.0.0"), 12)); options.KnownNetworks.Add(new IPNetwork(IPAddress.Parse("192.168.0.0"), 16)); }); // 启用转发头中间件,位置需在身份验证中间件之前 app.UseForwardedHeaders(); app.UseAuthentication(); app.UseAuthorization();
生产环境建议严格限制可信IP段;测试阶段可临时设置
options.ForwardLimit = null;和options.RequireHeaderSymmetry = false;跳过IP校验。
方法2:直接覆盖OpenID Connect的redirect_uri参数
如果转发头配置不生效,可在Azure AD身份验证配置中,强制修改跳转时的redirect_uri协议:
builder.Services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme) .AddMicrosoftIdentityWebApp(options => { builder.Configuration.Bind("AzureAd", options); options.Events = new OpenIdConnectEvents { OnRedirectToIdentityProvider = context => { // 将HTTP协议替换为HTTPS,保留原路径 context.ProtocolMessage.RedirectUri = context.ProtocolMessage.RedirectUri .Replace("http://", "https://", StringComparison.OrdinalIgnoreCase); return Task.CompletedTask; } }; });
方法3:固定配置应用Base URL为HTTPS
如果域名固定,可直接在配置中指定HTTPS的Base URL,构造正确的redirect_uri:
- 在
appsettings.json中添加配置:
{ "AppSettings": { "BaseUrl": "https://your-domain.com" } }
- 在
Program.cs中引用该配置:
builder.Services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme) .AddMicrosoftIdentityWebApp(options => { builder.Configuration.Bind("AzureAd", options); var baseUrl = builder.Configuration["AppSettings:BaseUrl"]; options.RedirectUri = $"{baseUrl}{options.CallbackPath}"; });
内容的提问来源于stack exchange,提问作者Neophyte
相关产品推荐
相关产品推荐

