【发布时间】:2017-08-22 07:18:24
【问题描述】:
我想使用 Rest 模板对 NTLM 进行身份验证,有人可以建议吗?
【问题讨论】:
我想使用 Rest 模板对 NTLM 进行身份验证,有人可以建议吗?
【问题讨论】:
如果有人再次偶然发现此条目,这是内置解决方案:
确保您的项目包含org.apache.httpcomponents.httpclient。
然后你可以用这个 sn-p 构建你的 RestTemplate:
CredentialsProvider credsProvider = new BasicCredentialsProvider();
credsProvider.setCredentials(AuthScope.ANY, new NTCredentials(user, password, "source-host-name", "domain-name"));
CloseableHttpClient httpClient = HttpClients.custom()
.setDefaultCredentialsProvider(credsProvider)
.build();
HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory();
requestFactory.setHttpClient(httpClient);
RestTemplate restTemplate = new RestTemplate(requestFactory);
【讨论】:
这就是我从here 那里得到的线索。学分仅在此处显示。
apache http client -> compile group: 'org.apache.httpcomponents', name: 'httpclient', version: '4.5.5' 更新了我的 rest 模板 bean 以使用 httpclient -
RestTemplate restTemplate = new RestTemplate();
HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory();
restTemplate.setRequestFactory(requestFactory);
然后按照链接here 所说的去做。添加 NtlmAuthenticator class 并在调用 restTemplate 之前执行此操作。
NtlmAuthenticator authenticator = new NtlmAuthenticator(userName, password);
Authenticator.setDefault(authenticator);
就是这样。一切就绪。
【讨论】: