gpt4 book ai didi

java - Spring security kerberos 请求 header 字段大小超出服务器限制错误

转载 作者:行者123 更新时间:2023-12-02 11:37:49 25 4
gpt4 key购买 nike

我们遇到了 Windows 身份验证登录应用程序的问题。 Spring security kerberos windows authentication用于此登录过程。然后将 spring security win-auth 实现到我们的项目中。它适用于某些客户。但有些客户遇到了如下错误。

Bad Request
Your browser sent a request that this server could not understand.
Size of a request header field exceeds server limit.

所以有一个question在服务器故障中。我们更改了 apache 的 LimitRequestFieldSize 。但这并没有解决我们的问题。我的问题与apache没有直接关系。所以我想在这里问我的问题。

问题与大小有关。该大小取决于用户的 Active Directory 组。有些组可能包含其他组。

如何在不更改 Active Directory 的情况下减小此大小?客户太多,我们无法更改所有用户的组。

第二点:

我们的配置文件是这样的

server:
port: 8080
app:
ad-domain: EXAMPLE.ORG
ad-server: ldap://WIN-EKBO0EQ7TS7.example.org/
service-principal: HTTP/neo.example.org@EXAMPLE.ORG
keytab-location: /tmp/tomcat.keytab
ldap-search-base: dc=example,dc=org
ldap-search-filter: "(| (userPrincipalName={0}) (sAMAccountName={0}))"

我们正在使用搜索过滤器

"(| (userPrincipalName={0}) (sAMAccountName={0}))"

但示例代码中没有组过滤器。

如果可能的话,我想在源代码上解决这个问题。

有什么方法可以使用 Spring Security 来限制用户组吗?

或者还有其他想法吗?

问候

最佳答案

看看你的问题和你写的内容,我发现你自己花了很少的精力来解决这个问题。你混淆了很多东西,让我来整理一下:

  1. 您的 Spring Web 应用程序可能在 Tomcat 上运行:这不会向您发送包含该文本的 400
  2. 您确实使用了 Spring Sec Kerberos,顺便说一句,这很糟糕:这不会向您发送 400
  3. 有人中间系统告诉您,由于 PAC 数据, header 大小太大:是的

可能您客户的反向代理(Apache Web 服务器?)拒绝将 Authorize header 转发回 Tomcat。您尚未提供为 LimitRequestFieldSize 设置的大小。最坏的情况下,您必须设置 max possible token size on Windows并添加 Base64 的开销。启用request header logging ,获取 Base 64 token 并将其传递给 ASN.1 decoder 。如果失败,说明token不完整,增加limit。

我们的设置是./extra/httpd-vhosts.conf:LimitRequestFieldSize 32768,我们有很多组,多达数百个。

关于java - Spring security kerberos 请求 header 字段大小超出服务器限制错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48802139/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com