如何在Spring的rest模板Header中设置NTLM身份验证

sss*_*wat 6 rest spring ntlm

我想使用 Rest 模板对 NTLM 进行身份验证,有人可以提出建议吗?

Sta*_*cBR 6

如果有人再次偶然发现此条目,这是内置解决方案:

确保您的项目包含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);
Run Code Online (Sandbox Code Playgroud)


Vik*_*lia 2

这就是我从这里得到的线索所做的。积分只放在这里。

  1. 设置要使用的休息模板apache http client->compile group: 'org.apache.httpcomponents', name: 'httpclient', version: '4.5.5'
  2. 更新了我的其余模板 bean 以使用 httpclient -

    RestTemplate restTemplate = new RestTemplate(); HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory(); restTemplate.setRequestFactory(requestFactory);

  3. 然后按照这里的链接所说的操作即可。添加NtlmAuthenticator class并在restTemplate 调用之前执行此操作。

    NtlmAuthenticator authenticator = new NtlmAuthenticator(userName, password); Authenticator.setDefault(authenticator);

就是这样。你们都准备好了。