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

负载均衡下Google OAuth 2.0回调为http被拒如何修改redirect_url协议

解决负载均衡后Google OAuth 2.0回调协议不匹配问题

问题根因

你遇到的两个报错都是反向代理场景下的典型问题:

  • 初始Google安全策略报错:Google近期收紧了OAuth回调校验规则,要求请求携带的redirect_uri必须和控制台配置的完全一致。由于负载均衡到后端服务走http协议,后端服务默认用当前请求的http协议生成回调地址,和控制台配置的https协议地址不匹配,因此被驳回。
  • 后续https:///开头的错误重定向:你手动全局修改了请求Scheme为https,但没有同步配置请求的Host值,导致生成重定向地址时域名部分为空,出现了三个斜杠的错误格式。

可行解决方案

方案一:自定义Google认证事件(最稳妥,不影响全局业务)

直接在Google OAuth配置中拦截授权重定向逻辑,手动修正回调地址的协议和域名,不需要修改全局请求配置:

app.UseGoogleAuthentication(new GoogleOAuth2AuthenticationOptions()
{
    ClientId = googleKey,              
    ClientSecret = googleSecret,       
    CallbackPath = new PathString("/signin-google"), // 仅填写相对路径即可
    Events = new OAuth2AuthenticationEvents
    {
        OnRedirectToAuthorizationEndpoint = context =>
        {
            // 替换回调地址的协议和域名为实际公网值
            var uriBuilder = new UriBuilder(context.RedirectUri);
            uriBuilder.Scheme = "https";
            uriBuilder.Host = "ourwebsite.com";
            context.RedirectUri = uriBuilder.Uri.ToString();
            return Task.CompletedTask;
        }
    }
});

方案二:全局配置转发头(标准解法,适合所有反向代理场景)

先确保负载均衡配置了以下两个透传头:

  • X-Forwarded-Proto:值为原始请求的协议,公网https请求该值固定为https
  • X-Forwarded-Host:值为原始请求的域名,即ourwebsite.com

然后在Startup.Auth.cs最开头(所有中间件注册之前)添加转发头处理配置,以ASP.NET Core为例:

app.UseForwardedHeaders(new ForwardedHeadersOptions
{
    ForwardedHeaders = ForwardedHeaders.XForwardedProto | ForwardedHeaders.XForwardedHost
});

如果是OWIN架构的ASP.NET Framework项目,也可以用以下简单配置代替:

app.Use((ctx, next) =>
{
    // 优先取转发头的协议和域名,没有的话再硬编码兜底
    ctx.Request.Scheme = ctx.Request.Headers.Get("X-Forwarded-Proto") ?? "https";
    ctx.Request.Host = new HostString(ctx.Request.Headers.Get("X-Forwarded-Host") ?? "ourwebsite.com");
    return next();
});

校验注意事项

配置完成后需要确认:

  • Google云控制台OAuth配置页的redirect_url确实为https://ourwebsite.com/signin-google,完全匹配无尾斜杠、大小写差异
  • OAuth同意屏幕的域名已加入授权列表,无待完成的验证项

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 21:15:09