请求标头字段对于 STS 生成的 cookie 来说太长

A request header field is too long for cookies generated by STS

提问人:Adrian 提问时间:4/7/2023 更新时间:4/7/2023 访问量:183

问:

我有一个外部 IdP,我无法控制组/角色的数量。(蔚蓝广告)并且STS(Ws Fed)生成的标头“Cookie”超出了限制。

“错误请求 - 标头字段太长 HTTP 错误 400。请求标头字段太长。

系统:。NET6 Web 应用 + IIS 6

已经尝试过:

  • 添加到 web.config<system.web><httpRuntime maxRequestLength="16777210" maxRequestHeadersTotalSize="131068"/></system.web>

  • 添加到 web.config

<security>
  <requestFiltering>
    <requestLimits maxAllowedContentLength="16777210">
      <headerLimits>
        <add header="Cookie" sizeLimit="131068" />
      </headerLimits>
     </requestLimits>
  </requestFiltering>
</security>       
  • 定义的 MaxFieldLengthMaxRequestBytes (Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP\Parameters)

  • 添加

builder.Services.Configure<IISServerOptions>(options =>
{
  options.MaxRequestBodySize = int.MaxValue;
  options.MaxRequestBodyBufferSize = int.MaxValue;
});

我能够让它在 Kestrel 上工作:,但我需要让它与 IIS 一起工作。kestrelOptions.Limits.MaxRequestHeadersTotalSize = int.MaxValue

IIS Cookie http-headers net-6.0 IIS-6

评论

1赞 Jason Pan 4/7/2023
请参考此文档,如果您仍然面临相同的问题,则需要使用高版本IIS,例如IIS10。
0赞 Adrian 4/10/2023
@JasonPan IIS10 无济于事。Http.sys 的每个标头字段的下限仍大于 100KB,并且 cookie 大于此值。

答: 暂无答案