代码之家  ›  专栏  ›  技术社区  ›  Phil

使用RestHighLevelClient在基本身份验证代理后面使用ElasticSearch端点

  •  1
  • Phil  · 技术社区  · 7 年前

    我有一个ElasticSearch集群,它位于配置了基本身份验证的代理之后。如何使用凭据从RestHighLevelClient拨打电话?在SpringBoot中,您通常必须如下配置HttpClientContext:

    @Bean
    public HttpClientContext configuredContext() {
        CredentialsProvider credsProvider = new BasicCredentialsProvider();
        credsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(DEFAULT_USER, DEFAULT_PASS));
    
        AuthCache authCache = new BasicAuthCache();
        authCache.put(httpHost, new BasicScheme());
    
        final HttpClientContext context = HttpClientContext.create();
        context.setCredentialsProvider(credsProvider);
        context.setAuthCache(authCache);
        return context;
    }
    

    但我在ClientBuilder或上下文请求中找不到任何拟合参数。有什么方法可以让这个设置工作吗?

    1 回复  |  直到 7 年前
        1
  •  2
  •   Noman Khan    7 年前

    您可以创建 RestHighLevelClient

    final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
        credentialsProvider.setCredentials(AuthScope.ANY,
                new UsernamePasswordCredentials("user", "password"));
    
        RestClientBuilder builder = RestClient.builder(new HttpHost("server", port))
                .setHttpClientConfigCallback(new RestClientBuilder.HttpClientConfigCallback() {
                    @Override
                    public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpClientBuilder) {
                        return httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider);
                    }
                });
    
        RestHighLevelClient client = new RestHighLevelClient(builder);
    

    https://www.elastic.co/guide/en/elasticsearch/client/java-rest/current/_basic_authentication.html