Can';t使用java.net.URLConnection在一个会话中使用不同的NTLM凭据进行身份验证
当我使用标准Java API(Java.net.URLConnection)访问HTTP服务器时,凭据在第一次成功身份验证后被“缓存”,随后对Authenticator.setDefault()的调用无效。因此,我需要重新启动应用程序以使用不同的凭据 当使用基本身份验证时,我没有观察到这种效果。但是我需要对我正在访问的服务器使用NTLM,雅加达公用HttpClient也不是替代品,因为它不支持NTLMv2(请参阅) 通过使用Wireshark查看数据包,我还观察到,在第一次成功身份验证之前,首先尝试使用当前Windows凭据进行身份验证。但是在成功的身份验证之后,只使用保存的凭据 在成功进行NTLM身份验证后,是否有任何方法重置或更改java.net.Authenticator使用的凭据?将+作为替代方案?否Can';t使用java.net.URLConnection在一个会话中使用不同的NTLM凭据进行身份验证,java,windows,authentication,ntlm,jdk1.6,Java,Windows,Authentication,Ntlm,Jdk1.6,当我使用标准Java API(Java.net.URLConnection)访问HTTP服务器时,凭据在第一次成功身份验证后被“缓存”,随后对Authenticator.setDefault()的调用无效。因此,我需要重新启动应用程序以使用不同的凭据 当使用基本身份验证时,我没有观察到这种效果。但是我需要对我正在访问的服务器使用NTLM,雅加达公用HttpClient也不是替代品,因为它不支持NTLMv2(请参阅) 通过使用Wireshark查看数据包,我还观察到,在第一次成功身份验证之前,首先
表示这是一个突出的错误。那里的一位作者提出了一些令人讨厌的反射魔法来克服这个问题。这是可以的,只要这是内部和记录为脆弱和潜在的破坏。当然不太好ndn,你能在这上面找到什么吗?在实现需要不同连接才能使用不同凭据的代理时面临类似问题。应该有一个指定“默认情况下不使用系统/用户凭据”的设置。如果我发现了什么,我会通知你的。表示“在Microsoft Windows平台上,NTLM身份验证尝试从系统获取用户凭据,而不提示用户的身份验证程序对象。如果服务器不接受这些凭据,则将调用用户的身份验证程序。”