【发布时间】:2022-07-07 04:30:47
【问题描述】:
我最近将我的项目从 .NET Framework 4.8 转换为 .NET 5。除了身份验证通过反向代理时用户可以登录之外,一切正常。
当用户连接到 VPN 时,一切正常,但在关闭 VPN 时,他们在登录 ADFS 后尝试向 /signin-wsfed 进行 POST 时收到 404。
我已将此添加到我的 Startup 中:
public void ConfigureServices(IServiceCollection services)
{
services.Configure<ForwardedHeadersOptions>(options =>
{
options.KnownNetworks.Clear();
options.KnownProxies.Clear();
options.ForwardLimit = null;
options.ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto;
});
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseForwardedHeaders();
}
我已经按照https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/proxy-load-balancer?view=aspnetcore-5.0#forwarded-headers-middleware-options中的规定开启了一些标头调试
我注意到不使用 UserForwardedHeaders 时的 X-Forwarded-For 值不等于我打开它时的 X-Original-For 值,链接表明它们应该相同。
NGINX 是我们的反向代理,这里是一些配置:
location / {
proxy_pass https://redacted_ip_address/;
proxy_redirect off;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
proxy_set_header Host $host;
proxy_set_header X-NginX-Proxy true;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Queue-Start "t=${msec}000";
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
proxy_cache_bypass $http_upgrade;
client_max_body_size 50m;
client_body_buffer_size 128k;
}
如果有人对我可以尝试的东西有任何建议,将不胜感激。
【问题讨论】: