使用 GoogleHttpClient 的 NT 身份验证

NT Authentication with GoogleHttpClient

您应该如何使用 Google Http Client 进行 NT 身份验证?

我可以找到很多关于 Apache HttpClientNTCredentials 的信息,我可以使用这些信息,但在我试图标准化新代码的 Google 客户端上没有任何信息。

我已经走到这一步了:

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();
}

ApacheHttpTransport 解决方案

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

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

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

我知道存在使用 RequestConfig 的更好解决方案,但这解决了我的问题并让我重新开始工作 现在

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