使用GoogleHttpClient进行NT身份验证

时间:2015-11-17 16:02:39

标签: java authentication windows-authentication apache-httpclient-4.x google-http-client

您应该如何使用Google Http Client

进行NT身份验证

我可以找到Apache HttpClientNTCredentials的大量信息,但我在谷歌客户端上没有任何工作,我试图将新代码标准化。

我已经走到这一步了:

final NTCredentials ntc = new NTCredentials(System.getProperty("user.name"), args[0], InetAddress.getLocalHost().getHostName(), "DOMAIN");
final BasicCredentialsProvider cp = new BasicCredentialsProvider();
cp.setCredentials(AuthScope.ANY, ntc);
final HttpClientBuilder hcb = HttpClientBuilder.create();
hcb.setDefaultCredentialsProvider(cp);
final HttpTransport ht = new ApacheHttpTransport(hcb.build());

我得到了这个例外:

Exception in thread "main" java.lang.UnsupportedOperationException
    at org.apache.http.impl.client.InternalHttpClient.getParams(InternalHttpClient.java:210)
    at com.google.api.client.http.apache.ApacheHttpTransport.<init>(ApacheHttpTransport.java:129)
    at GoogleHttpClientScratch.main(GoogleHttpClientScratch.java:36)

org.apache.http.impl.client.InternalHttpClient.java

引起的
@Override
public HttpParams getParams() {
    throw new UnsupportedOperationException();
}

1 个答案:

答案 0 :(得分:0)

ApacheHttpTransport解决方案

我最终提取了最新的dev分支和patching up the offending ApacheHttpTransport constructor myself

我还提交了pull request以将更改合并到主线项目中。

我实际上修补了版本1.20.0,因为我正在使用并重新编译并在我的本地maven存储库中安装此模块。

我知道使用RequestConfig存在更好的解决方案,但这会解决我的问题并让我再次工作现在

如果我重构整个班级以使用RequestConfig,我也会更新我的分叉。我需要了解RequestConfig如何正确使用并且需要时间。