【问题标题】:How to set NTLM authentication in rest template Header in Spring如何在 Spring 的 rest 模板 Header 中设置 NTLM 身份验证
【发布时间】:2017-08-22 07:18:24
【问题描述】:

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

【问题讨论】:

    标签: spring rest ntlm


    【解决方案1】:

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

    确保您的项目包含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);
    

    【讨论】:

    • 这似乎不起作用。 NTCredrntials 构造函数中的第三个参数称为“工作站”。不知道里面会发生什么。我刚刚通过了null。当我在 url 上执行 restTemplate.exchange 时,它​​会引发 401 未授权,这意味着无法识别凭据。相同的设置适用于邮递员。
    • @saran3h 正如上面的代码所述,您需要发送执行请求的机器的主机名。见:hc.apache.org/httpcomponents-client-4.5.x/current/httpclient/…
    • 谢谢你,为我工作,拯救了我的一天。
    【解决方案2】:

    这就是我从here 那里得到的线索。学分仅在此处显示。

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

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

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

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

    就是这样。一切就绪。

    【讨论】:

    • 您对 Authenticator 做了什么?你能发布一个完整的例子吗?
    • 如何使用 NtlmAuthenticator?该对象有什么用途?
    猜你喜欢
    • 1970-01-01
    • 2019-07-22
    • 2021-12-22
    • 1970-01-01
    • 1970-01-01
    • 2022-11-04
    • 2017-07-08
    • 2020-10-20
    • 1970-01-01
    相关资源
    最近更新 更多