2013-11-26 38 views
0

正如你可以看到Apache的HttpClient的3.X了,你可以用它来减少不必要的连接,这是客户端和服务器之间发送各地的数据量惊人的方法:为什么从Apache httpClient中删除预认证?

client.getParams()setAuthenticationPreemptive(真正);

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

我想知道的是,他们为什么要删除它?
我知道有喜欢用一个拦截器或者修改报头适当的解决方法,但我想知道有关变化背后的原因:稳定性,性能,安全性,一致性? ...

+0

你应该问他们* * ... –

+1

我想我有资格作为_them_。如果问题重新打开,我可以回答。 – oleg

+0

我假设有这样一个Apache开发者的邮件列表。我会建议在那里问这个问题。 StackOverflow上的这个问题肯定会吸引那些认为他们知道答案的人的答案,或者不知道其原因。我怀疑有很多文件说明为什么某些东西被删除以便基于答案。我认为这个问题可以更好地保持封闭。 – Sumurai8

回答

1

抢先认证作为一个简单的布尔标志的功能是怎么加入到HC 3.X没有长远的考虑,直到3.x的代码行成为一个完全无法控制的混乱一个很好的例子。

预防意外敏感信息披露的是改变先发制人认证慧聪4.x的工作方式的主要原因HC 3.x使人们非常容易地将其凭据提交给明文的随机站点,甚至没有意识到这一点。

由于4.1 HttpClient的默认情况下采用了更加健壮的策略:身份验证凭据获得明确的验证挑战,也是一个成功验证后缓存在执行上下文。在同一会话中的所有后续请求都使用缓存的身份验证材料进行抢先验证。如果需要的话,仍然可以通过预填充验证缓存来强制执行初始请求的抢先验证。但至少要求用户明确地提供一个特定认证目标的认证资料。

+0

谢谢你的回答。但是这怎么会发生呢?如果您在preauth上重新使用客户端对象并更改其目标地址,会发生这种情况吗? – Traubenfuchs

+1

@Traubenfuchs:应该共享和重用HttpClient,通常由代表不同用户身份的不同线程共同使用。 HC 3.x的用户经常会打开先占式认证,而不会仅仅因为他们听到有人说会提高性能而想。 – oleg