【问题标题】:Unable to authenticate using WSFederation after upgrading to .NET 5 from .NET Framework 4.8从 .NET Framework 4.8 升级到 .NET 5 后无法使用 WSFederation 进行身份验证
【发布时间】: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;
}

如果有人对我可以尝试的东西有任何建议,将不胜感激。

【问题讨论】:

    标签: c# nginx .net-5


    【解决方案1】:

    事实证明,.NET Core 在身份验证 Cookie 中存储了更多信息,这导致 cookie 的大小超过了 Nginx 配置的大小。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-12
      • 2021-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多