Я хочу аутентифицировать NTLM с помощью шаблона Rest, может ли кто-нибудь предложить способ?
Как установить NTLM-аутентификацию в заголовке шаблона отдыха весной
Ответы (2)
Если кто-то снова наткнется на эту запись, это встроенное решение:
Убедитесь, что ваш проект включает в себя org.apache.httpcomponents.httpclient
.
Затем вы можете создать свой 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);
это то, что я сделал, взяв подсказки из здесь. Кредиты идут только здесь.
- Настройте оставшийся шаблон для использования
apache http client
->compile group: 'org.apache.httpcomponents', name: 'httpclient', version: '4.5.5'
Обновлен мой bean-компонент шаблона отдыха для использования httpclient -
RestTemplate restTemplate = new RestTemplate(); HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory(); restTemplate.setRequestFactory(requestFactory);
Затем просто сделайте то, что говорит ссылка здесь. Добавьте
NtlmAuthenticator class
и сделайте это непосредственно перед вызовом restTemplate.NtlmAuthenticator authenticator = new NtlmAuthenticator(userName, password); Authenticator.setDefault(authenticator);
Вот и все. Вы все настроены.