在弹性搜索高级客户端中为JAVA添加身份验证

时间:2018-01-10 10:43:18

标签: java authentication elasticsearch

我在使用X-PACK保护的弹性云实例中使用了弹性搜索实例。

之前我一直在使用高级别的休息客户端而没有任何问题,但我无法找到如何在其上发送基本身份验证标头。

我曾尝试将凭据作为网址的一部分,但在这种情况下它似乎无法连接。

有没有人成功连接到高级休息客户端的安全弹性搜索?

干杯,

1 个答案:

答案 0 :(得分:17)

您可以为Java低级别REST客户端指定用户名和密码,并将低级别REST客户端传递给RestHighLevelClient实例。

final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
credentialsProvider.setCredentials(AuthScope.ANY,
        new UsernamePasswordCredentials("user", "password"));

RestClientBuilder builder = RestClient.builder(new HttpHost("localhost", 9200))
        .setHttpClientConfigCallback(new RestClientBuilder.HttpClientConfigCallback() {
            @Override
            public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpClientBuilder) {
                return httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider);
            }
        });

RestHighLevelClient client = new RestHighLevelClient(builder);

<强>参考文献: