我無法將NTLN身份驗證添加到使用Jersey和Apache HttpClient的現有應用程序。我只能使用JCIFS進行身份驗證,來自HttpClient的默認NTLM身份驗證不起作用(我獲得401
)。JCIFS可以和Jersey一起使用嗎?
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);
或者有一些其他的方式來設置AuthSchemes在javax.ws.rs.client.Client
,可以在新澤西州被使用?