You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 6+下ASP.NET Identity强制HTTPS登录重定向问题求助

.NET 6+ 强制OAuth外部登录重定向使用HTTPS

问题场景

在.NET 6+中使用ASP.NET Identity实现OAuth外部登录(如Google)时,若服务器存在SSL卸载配置,应用无法识别真实的HTTPS请求,导致生成的第三方认证重定向URI协议为HTTP,触发认证服务(如Google)的验证失败。本地HTTPS开发环境测试正常,部署到生产环境后出现问题,且无法控制主机配置,需要硬编码强制使用HTTPS。

当前相关代码:

builder.Services.AddDefaultIdentity<ApplicationUser>(options => options.SignIn.RequireConfirmedAccount = true)
    .AddEntityFrameworkStores<my_db_context>();

builder.Services.AddAuthentication().AddGoogle(goog =>
{
    goog.ClientId = builder.Configuration["GoogleAuthClientId"];
    goog.ClientSecret = builder.Configuration["GoogleAuthClientSecret"];
});

解决方案

方法1:配置转发头识别(优先推荐)

当存在SSL卸载时,代理服务器会通过X-Forwarded-Proto等转发头告知应用真实的请求协议。在应用内配置转发头中间件,让ASP.NET Core识别真实的请求协议:

// 在builder.Build()之前添加转发头配置
builder.Services.Configure<ForwardedHeadersOptions>(options =>
{
    options.ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto;
    // 若代理服务器IP固定,可添加到可信列表(可选)
    // options.KnownProxies.Add(IPAddress.Parse("代理服务器IP"));
});

// 在app.UseRouting()之前启用转发头中间件
var app = builder.Build();
app.UseForwardedHeaders();

方法2:直接修改OAuth重定向地址为HTTPS

针对Google OAuth单独配置,在跳转认证服务前强制修改重定向URI的协议为HTTPS:

builder.Services.AddAuthentication().AddGoogle(goog =>
{
    goog.ClientId = builder.Configuration["GoogleAuthClientId"];
    goog.ClientSecret = builder.Configuration["GoogleAuthClientSecret"];
    goog.Events = new OAuthEvents
    {
        OnRedirectToAuthorizationEndpoint = context =>
        {
            // 将原重定向地址的协议替换为HTTPS
            var uriBuilder = new UriBuilder(context.RedirectUri);
            uriBuilder.Scheme = Uri.UriSchemeHttps;
            uriBuilder.Port = -1; // 使用HTTPS默认端口443
            context.Response.Redirect(uriBuilder.Uri.ToString());
            return Task.CompletedTask;
        }
    };
});

方法3:全局强制所有URL生成使用HTTPS

通过路由配置,强制ASP.NET Core生成的所有URL都使用HTTPS协议:

builder.Services.Configure<RouteOptions>(options =>
{
    options.EnforceHTTPS = true;
});

内容的提问来源于stack exchange,提问作者EdSF

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 09:55:28