Enabled to use apikey

This commit is contained in:
Dominique Eifländer 2021-10-07 16:15:38 +02:00
parent 2b0a357659
commit e294caf014
3 changed files with 12 additions and 0 deletions

View File

@ -1,14 +1,18 @@
package com.iqser.red.service.search.v1.server.client;
import com.iqser.red.service.search.v1.server.settings.ElasticsearchSettings;
import lombok.RequiredArgsConstructor;
import lombok.experimental.Delegate;
import lombok.extern.slf4j.Slf4j;
import org.apache.http.Header;
import org.apache.http.HttpHost;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.message.BasicHeader;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestClientBuilder;
import org.elasticsearch.client.RestHighLevelClient;
@ -16,6 +20,7 @@ import org.springframework.stereotype.Service;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import java.io.IOException;
import java.util.stream.Collectors;
@ -46,6 +51,11 @@ public class ElasticsearchClient {
.setRequestConfigCallback(requestConfigBuilder -> requestConfigBuilder.setConnectTimeout(ABSURD_HIGH_TIMEOUT)
.setSocketTimeout(ABSURD_HIGH_TIMEOUT));
if (settings.getApiKeyAuth() != null) {
var defaultHeaders = new Header[]{new BasicHeader("Authorization", "ApiKey " + settings.getApiKeyAuth())};
builder.setDefaultHeaders(defaultHeaders);
}
if (settings.getUsername() != null && !settings.getUsername().isEmpty()) {
final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(settings.getUsername(), settings

View File

@ -20,6 +20,7 @@ public class ElasticsearchSettings {
private int port = 9300;
private String scheme = "http";
private String apiKeyAuth;
private String username;

View File

@ -39,6 +39,7 @@ elasticsearch:
scheme: ${elasticsearch.cluster.scheme:http}
username: ${elasticsearch.cluster.username}
password: ${elasticsearch.cluster.password}
apiKeyAuth: ${elasticsearch.cluster.apikey}
storage:
signer-type: 'AWSS3V4SignerType'