【发布时间】:2017-12-06 02:26:23
【问题描述】:
我在使用 Jersey 和 Apache HttpClient 的现有应用程序中添加 NTLM 身份验证时遇到问题。我只能使用 JCIFS 进行身份验证,来自 HttpClient 的默认 NTLM 身份验证不起作用(我得到401)。
Apache HttpClient 页面中的示例显示了如何使用 CloseableHttpClient: https://hc.apache.org/httpcomponents-client-4.5.x/ntlm.html
Registry<AuthSchemeProvider> authSchemeRegistry = RegistryBuilder.<AuthSchemeProvider>create()
.register(AuthSchemes.NTLM, new JCIFSNTLMSchemeFactory())
.register(AuthSchemes.BASIC, new BasicSchemeFactory())
.register(AuthSchemes.DIGEST, new DigestSchemeFactory())
.register(AuthSchemes.SPNEGO, new SPNegoSchemeFactory())
.register(AuthSchemes.KERBEROS, new KerberosSchemeFactory())
.build();
CloseableHttpClient httpClient = HttpClients.custom()
.setDefaultAuthSchemeRegistry(authSchemeRegistry)
.build();
但是对于 CloseableHttpClient 我不能使用像target这样的方法:
WebTarget target = client.target(this.my Address).path(elementPath)
.resolveTemplate(P_ID, myId);
只有execute。
我不确定是否应该重写整个应用程序并仅使用基本的 HttpClient 调用,例如:
HttpGet httpGet = new HttpGet(repositoryAddress + "/" + "element/70032_1498404600000(,,arm)");
CloseableHttpResponse response = httpClient.execute(httpGet);
或者还有其他方法可以在javax.ws.rs.client.Client中设置AuthSchemes,可以在Jersey使用?
【问题讨论】:
标签: java jersey apache-httpclient-4.x ntlm jcifs