我正在Linux tomcat 7.0安装上实现spnego sso身份验证,并且在http://spnego.sourceforge.net/index.html上的示例相当顺利。我通过了飞行前的检查清单,实际上让它与Firefox中的'BASIC'票据一起来回传递。
但是,当使用“Negotiate”Authorization标头时,我在catalina.out中收到以下错误消息:
INFO: Error parsing HTTP request header
在IE和模拟soapUI中的请求时都会发生这种情况。发送回两者的回复是:
400 Bad Request
正如我所说的那样,它在Firefox中运行,但只是部分地提示在那里登录,继续进行“基本”身份验证。 (至少是这样做,直到我在web.xml过滤器配置中关闭它,所以我知道正在读取这些配置)
我正在使用以下enctypes:
default_tkt_enctypes = aes256-cts-hmac-sha1-96 aes128-cts des3-cbc-sha1 des-cbc-md5 des-cbc-crc arcfour-hmac-md5
default_tgs_enctypes = aes256-cts-hmac-sha1-96 aes128-cts des3-cbc-sha1 des-cbc-md5 des-cbc-crc arcfour-hmac-md5
permitted_enctypes = aes256-cts-hmac-sha1-96 aes128-cts des3-cbc-sha1 des-cbc-md5 des-cbc-crc arcfour-hmac-md5
我怀疑它与256加密有关,但我确实下载并将它们放入我的java lib / security文件夹中的无限制加密罐,如下所述:
http://docs.oracle.com/javase/7/docs/technotes/guides/security/jgss/jgss-features.html
然而,这确实解决了问题(除非我遗漏了某些东西)。我已经广泛搜索了“错误解析...”http错误,该错误显示在catalina.out文件中,但还没有找到解决方案。其他设置(领域,域等)似乎工作正常,因为我修改了它们并得到了不同的更具体的错误。
关于INFO: Error parsing HTTP request header
错误的任何想法?
这是一个内部企业环境,SSO已经成功实现了httpd,但我们希望将其从一个全天候的解决方案中移除。
答案 0 :(得分:12)
终于解决了这个问题。事实证明,“Negotiate”授权标头在Tomcat中将标头的大小推过默认的8kb最大大小,这导致了误导性错误。 (我原以为一个更有用的错误信息就是“达到最大标题大小”)
无论如何,我发现解决方案将在serverfault的以下答案中描述。
https://serverfault.com/questions/56691/whats-the-maximum-url-length-in-tomcat
为了完整性:
<Connector port="8080" maxHttpHeaderSize="65536" protocol="HTTP/1.1" ... />