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

部署带Azure AD登录的ASP.NET Core 6应用至Cloud Run遇HTTPS问题

解决方案:ASP.NET Core 6 + Azure AD 部署至Google Cloud Run重定向问题

核心问题根源

Google Cloud Run采用反向代理架构:外部请求通过HTTPS到达Cloud Run,再以HTTP转发给容器内的应用。ASP.NET Core默认无法识别这种场景下的外部协议,生成的Azure AD重定向URI为HTTP,而Azure AD不允许HTTP重定向URI,最终导致登录失败。

具体解决步骤

1. 配置ASP.NET Core信任反向代理

在Program.cs(或Startup.cs)中添加转发头配置,让应用识别外部的HTTPS协议:

// 信任Cloud Run反向代理的转发头
app.UseForwardedHeaders(new ForwardedHeadersOptions
{
    ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto
});

// 生产环境强制Cookie使用Secure属性
app.UseCookiePolicy(new CookiePolicyOptions
{
    Secure = CookieSecurePolicy.Always
});

2. 更新Azure AD重定向URI

在Azure门户的AD应用注册页面,添加Cloud Run应用的HTTPS地址作为重定向URI,格式为:
https://<你的Cloud Run服务域名>/signin-oidc

3. 容器保持HTTP启动(无需内置HTTPS证书)

Cloud Run会处理外部HTTPS终止,容器内部只需以HTTP启动即可,无需配置HTTPS证书。确保Dockerfile中应用监听HTTP端口,示例片段:

# 设置应用监听HTTP端口
ENV ASPNETCORE_URLS=http://0.0.0.0:80
ENTRYPOINT ["dotnet", "ComplexApp.dll"]

4. 验证部署

部署完成后,访问Cloud Run的HTTPS地址,应用会自动生成HTTPS协议的重定向URI,正常完成Azure AD登录流程。

额外注意事项

  • 本地开发时,可设置环境变量ASPNETCORE_FORWARDEDHEADERS_ENABLED=true模拟反向代理场景,无需强制本地使用HTTPS测试。
  • 确认Cloud Run服务的访问权限配置正确,允许外部用户访问。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 10:12:39