我认为这应该很容易找到谷歌,但经过彻底的搜索并试图理解实际的实施而没有取得足够的成功,我认为这里的某个人可能有一个想法:关于HTTP代理身份验证的实现具体细节Oracle的Java VM(Java 6)在某处记录了吗?
如果没有,也许有人可以对我们遇到的一些问题略微说清楚:
系统属性http.proxyUser和http.proxyPassword显然不再受支持。这是对的吗?
如果代理提供多个身份验证方案,则使用哪种身份验证方案?它似乎是第一个。实际上这并不重要,但NTLM方案的实现似乎行为不同,因此在我们的案例中了解实际使用哪种方案很重要。
如果Java决定使用NTLM进行身份验证,则不会始终使用提供的身份验证器。至少在Windows下,使用当前进程所有者的凭据进行身份验证尝试。从实际实现来看并不明显,但我在网上发现的其他讨论表明,如果第一次失败,来自Authenticator的凭证将在第二次尝试中使用。在我们的示例中,IIS代理在第一次身份验证尝试时返回“502 bad gateway”错误,因此Java实现可能假定问题与身份验证凭据无关,因此无需进一步的身份验证尝试就会立即失败。有人可以确认这是正确的吗?