我想使用Jakarta Commons的HTTP客户端。否则Kerberos身份验证与服务器进行通信。验证总是失败。在更深的挖掘,我发现,Kerberos令牌头中有回车换行字符,这是问题的根源。为什么一定\ r \ n个字符,为什么是一个问题?

有帮助吗?

解决方案

\ r \ n个字符在Kerberos令牌是一个问题,因为\ r是一个HTTP控制字符。这实际上意味着,服务器只能看到令牌的第一线和忽略休息,因此认证失败。更糟糕的是,令牌的下一个喜欢被当作新的标题,不会被格式化很好。所以HTTP服务器将惊慌。

发生这种情况的原因是因为RFC 1521规范指出base64编码线长度在76个字符被限制。因此\ r \ n个字符。而这不符合HTTP协议很好地工作。此表面仅当使用Kerberos令牌是base64编码

所以解决方案是对从Kerberos的base64去掉\ r \ n个字符编码的令牌头。另外,较早版本的Apache公地编解码器将不限制base64编码到76线,因此不是一个问题。所以,如果你有勾成的编码,带出存在问题的字符。如果你不然后使用Apache的百科全书代码旧版本与公地httpclient的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top