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

OpenIddict:部署到Cloud Run后如何将openid-configuration端点改为HTTPS?

解决Cloud Run上OpenIddict认证服务器端点HTTP转HTTPS的问题

Cloud Run的流量模型是外部HTTPS请求先到Google的负载均衡,再以HTTP转发到容器实例,所以需要让.NET Core应用识别转发的协议头,同时配置OpenIddict适配这个环境。

步骤1:配置.NET Core信任反向代理头

在Program.cs中添加转发头配置,让应用识别Cloud Run传递的X-Forwarded-Proto头(标记实际请求协议为HTTPS):

builder.Services.Configure<ForwardedHeadersOptions>(options =>
{
    options.ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto;
    // 生产环境建议替换为Cloud Run官方公布的代理IP段,避免安全风险
    options.AllowUnknownNetworks = true;
});

// 注意:必须在UseRouting之前调用UseForwardedHeaders
app.UseForwardedHeaders();

步骤2:配置OpenIddict使用转发头

在OpenIddict服务器配置中启用转发头支持,让它基于实际请求协议生成HTTPS端点:

builder.Services.AddOpenIddict()
    .AddServer(options =>
    {
        // 配置你的认证端点
        options.SetAuthorizationEndpointUris("/connect/authorize")
              .SetTokenEndpointUris("/connect/token")
              .SetUserinfoEndpointUris("/connect/userinfo");

        // 启用转发头支持,确保生成的端点URL是HTTPS
        options.UseForwardedHeaders();
    });

步骤3:验证客户端回调地址

确保所有OpenIddict客户端配置的RedirectUri和PostLogoutRedirectUri都是HTTPS格式,比如https://your-service.run.app/callback。

步骤4:检查Cloud Run服务设置

  • Cloud Run默认提供的*.run.app域名自带HTTPS证书,无需额外配置SSL证书。
  • 确认服务的Ingress设置为「All」(允许外部访问),此时外部请求只能通过HTTPS访问你的服务。

内容的提问来源于stack exchange,提问作者Vũ Hoàng

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 23:45:25