出于什么原因,从Apache httpClient中删除了预身份验证?

时间:2013-11-26 13:58:38

标签: java apache httpclient pre-authentication

正如您所看到的,Apache httpclient 3.x有一个很棒的方法,您可以使用它来减少客户端和服务器之间发送的不必要的连接和数据的数量:

client.getParams()setAuthenticationPreemptive(真);

http://hc.apache.org/httpclient-3.x/authentication.html#Preemptive_Authentication

我想知道的是,为什么要删除它?
我知道有一些正确的解决方法,比如使用拦截器或修改标头,但我想知道这种变化背后的原因:稳定性,性能,安全性,整合性? ...

1 个答案:

答案 0 :(得分:1)

作为一个简单的布尔标志的抢占式身份验证是一个很好的例子,说明如何在没有长期考虑的情况下将功能添加到HC 3.x,直到3.x代码行成为一个完全无法管理的混乱。

防止意外敏感信息泄露是改变抢先认证在HC 4.x中工作方式的主要原因。 HC 3.x使得人们可以非常轻松地将凭据提交到明文中的随机网站,而不会意识到这一点。

自4.1起,HttpClient默认使用更加理智的策略:在明确的身份验证质询和成功的身份验证之后,身份验证凭据会在执行上下文中缓存。使用缓存的身份验证材料预先对同一会话中的所有后续请求进行身份验证。如有必要,可以通过预先填充auth缓存来强制对初始请求进行抢先身份验证。但至少要求用户明确为特定的 auth目标提供auth材料。