我正在开发使用apache HttpClient版本4.5.2支持基本和NTLM身份验证代理的应用程序。用户界面当前不向用户询问代理中身份验证的类型,如果用户输入如下所示的域,则假定为NTLM:
Credentials credentials = null;
if (domain != null && domain.length() > 0) {
credentials = new NTCredentials(username, password, client, domain);
else {
credentials = new UsernamePasswordCredentials(username, password);
}
这种方法在大多数情况下都有效。但是,在一个NTLM代理服务器是工作组的一部分(而不是域的一部分)的部署中,该域为null,根据上面的逻辑,使用的凭据是UsernamePasswordCredentials。由于代理支持NTLM,并且需要具有凭据才能成为NTCredentials的实例,因此请求失败。
是否可以在不询问用户身份验证类型的情况下,在属于工作组的NTLM代理中使这种代码具有通用性?
答案 0 :(得分:1)
无论相对的端点是否是NT域的一部分,都可以仅将NTCredentials
和空域用作唯一的凭据类型。