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

Umbraco 14后台登录失败:服务器仅接受HTTPS请求

Umbraco 14后台登录HTTPS错误解决指南

Umbraco 14 HTTPS强制机制的关键变更

  • 升级依赖的OpenIddict版本,默认启用严格HTTPS校验,所有认证请求必须通过HTTPS,无HTTP回退机制。
  • 优化ForwardedHeaders中间件默认配置,但在反向代理(Azure App Service、IIS)或Docker环境下,若请求头传递异常,应用无法识别外部HTTPS请求。
  • 移除旧版本中宽松的HTTPS兼容设置,强制遵循OAuth2/OpenID Connect安全规范。

分步解决方案

1. 配置ForwardedHeaders中间件

在Program.cs中添加并优先运行该中间件,确保应用能识别代理传递的HTTPS标识:

builder.Services.Configure<ForwardedHeadersOptions>(options =>
{
    options.ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto;
    // 生产环境建议指定Azure/IIS的代理IP段,示例为Azure内部常用段
    options.KnownProxies.Add(IPAddress.Parse("10.0.0.0/8"));
});

// 必须在UseUmbraco之前调用
app.UseForwardedHeaders();
app.UseUmbraco();

2. 调整OpenIddict适配代理场景

在Program.cs中显式配置OpenIddict使用转发头:

builder.Services.AddUmbraco(builder.Environment, builder.Configuration)
    .AddBackOffice()
    .AddWebsite()
    .AddComposers()
    .Build();

builder.Services.Configure<OpenIddictServerOptions>(options =>
{
    options.UseForwardedHeaders();
    // 仅测试场景临时禁用HTTPS强制(生产环境禁止)
    // options.RequireSsl = false;
});

3. 检查Azure/Docker环境配置

  • Azure App Service:
    • 门户“配置→常规设置”开启“HTTPS强制”;
    • “网络→应用服务代理”启用“转发客户端IP”和“转发协议”。
  • Docker容器:
    • 确保容器端口映射到Azure的HTTPS端口(443);
    • Dockerfile不要覆盖应用的HTTPS相关配置。

4. 本地IIS部署补充设置

  • 确认站点HTTPS绑定的SSL证书有效;
  • 启用IIS的“ARR代理”功能,在站点“应用程序请求路由”中开启“启用代理”,保证请求头正确转发。

5. 验证请求头传递

添加临时中间件检查X-Forwarded-Proto头是否为https:

app.Use(async (context, next) =>
{
    Console.WriteLine($"X-Forwarded-Proto: {context.Request.Headers["X-Forwarded-Proto"].FirstOrDefault()}");
    await next();
});

Docker+Azure环境的特殊影响

Docker容器内部通常运行HTTP端口(如80),外部由Azure代理处理HTTPS终止。若ForwardedHeaders配置错误,应用会误判请求为HTTP,触发OpenIddict的HTTPS强制错误。必须确保代理正确传递X-Forwarded-Proto头,且应用正确处理该头。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 18:04:57