Azure Container App中Blazor Server的OpenID重定向HTTP转HTTPS配置问题
解决Azure Container App中Blazor Server OpenID重定向URI为HTTP的问题
关键原因
Azure Container App的网关已经做了HTTPS终止——网关负责处理SSL加密,和容器之间用HTTP通信。你的Blazor应用没识别到外部的HTTPS请求,所以生成了HTTP开头的重定向URI,完全不用给容器传证书,也不用改443端口。
具体解决步骤
1. 让应用识别代理转发头
直接在Blazor应用的Program.cs里加这段配置,让应用读取网关传递的X-Forwarded-Proto头,从而知道外部是HTTPS请求:
builder.Services.Configure<ForwardedHeadersOptions>(options => { options.ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto; // 生产环境建议限制Azure网关的IP,测试阶段可以清空KnownNetworks和KnownProxies options.KnownNetworks.Clear(); options.KnownProxies.Clear(); }); // 一定要放在app.UseRouting()之前 app.UseForwardedHeaders();
2. 用环境变量快速配置(可选)
嫌改代码麻烦的话,直接在Azure Container App的环境变量里加ASPNETCORE_FORWARDEDHEADERS_ENABLED=true,ASP.NET Core会自动处理转发头,效果和上面的代码一致。
3. 检查身份提供商的重定向URI
别忘了在你的OpenID提供商(比如Azure AD、Auth0)的应用注册里,把https://你的自定义域名/signin-oidc添加为合法的重定向URI,确保和应用生成的地址匹配。
4. 保持容器端口为80
别改容器入口到443,容器和Azure网关之间的内部通信是安全加密的,完全不需要容器处理SSL证书。
内容的提问来源于stack exchange,提问作者Thibaud
相关产品推荐
相关产品推荐

