web-dev-qa-db-fra.com

Ajouter une authentification dans le client de haut niveau elasticsearch pour JAVA

J'utilise une instance elasticsearch dans une instance de cloud élastique sécurisée avec X-PACK.

J'utilisais le client de repos de haut niveau auparavant sans aucun problème, mais je n'arrive pas à trouver comment envoyer l'en-tête d'authentification de base dessus.

J'ai essayé de mettre les informations d'identification dans l'URL, mais il ne semble pas pouvoir se connecter dans ce cas.

Quelqu'un a-t-il réussi à se connecter à un elasticsearch sécurisé avec un client de repos de haut niveau?

À votre santé,

13
pedromarce

Vous pouvez spécifier le nom d'utilisateur et le mot de passe pour le client Java Low Level REST et passer le niveau Low REST Client au client RestHighLevelClient instance.

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);

Références:

21
Bless