我们遇到了使用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.
所以serverfault中有question。我们更改了apache的 LimitRequestFieldSize 。但它没有解决我们的问题。我的问题与apache没有直接关系。所以我想在这里问我的问题。
问题与size有关。此大小取决于用户的Active目录组。 有些组可能包含其他组。
如何在不更改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}))"
但示例代码中没有组过滤器。
我想在源代码上解决这个问题,如果可能的话。
有没有办法限制具有弹簧安全性的用户组?
还是其他任何想法?
此致
答案 0 :(得分:1)
看看你的问题以及你写的内容,向我表明你花了很少的精力自己解决问题。你混合了很多东西,让我把它整理出来:
可能您的客户的反向代理(Apache Web Server?)拒绝将Authorize
标头转发回Tomcat。您尚未提供为LimitRequestFieldSize
设置的尺寸。在最坏的情况下,您必须设置max possible token size on Windows并为Base64添加开销。启用request header logging,获取Base 64令牌并将其传递给ASN.1 decoder。如果失败,则令牌不完整,增加限制。
我们的设置为./extra/httpd-vhosts.conf: LimitRequestFieldSize 32768
,我们有很多小组,数百个小组。