elasticsearch basic auth 인증 코드
자바2022. 10. 1. 15:16
728x90
이전 회사에서 구버전을(7.5.1) 사용하는데다 oss버전을 사용하여 인증을 딱히 신경안쓰고 쓰다가 최신 버전 할려니 인증이 필요 하다. 예전 엘라스틱 협력사 다닐때 썻던 인증 코드가 있지만 버전이 많이 올라온 만큼 다시 간단히 작성해봤다.
엘라스틱 doc상 소스가 생각보다 친절하지 않아 개발이라기 보단 조합이긴 하지만 대략 이형태로 가져다 쓰면 크게 문제 없다.
같은거 여러번 하기 싫어서 기록성으로 남겨 둔다.
public ElasticsearchClient getCon() throws Exception {
//엘라스틱 초기 구동 후 생성된 인증서 그대로 쓰면 된다.
Path caCertificatePath = Paths.get("D:/elk/elasticsearch-8.4.2/config/certs/http_ca.crt");
CertificateFactory factory =
CertificateFactory.getInstance("X.509");
Certificate trustedCa;
try (InputStream is = Files.newInputStream(caCertificatePath)) {
trustedCa = factory.generateCertificate(is);
}
final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
//인증에 사용할 아이디 패스워드
credentialsProvider.setCredentials(AuthScope.ANY,
new UsernamePasswordCredentials("elastic", "Qa5_TIoB5I0wu+ii*syq"));
KeyStore trustStore = KeyStore.getInstance("pkcs12");
trustStore.load(null, null);
trustStore.setCertificateEntry("ca", trustedCa);
SSLContextBuilder sslContextBuilder = SSLContexts.custom()
.loadTrustMaterial(trustStore, null);
final SSLContext sslContext = sslContextBuilder.build();
RestClientBuilder builder =RestClient.builder(
new HttpHost("localhost", 9200, "https")) //ip port https
.setHttpClientConfigCallback(new RestClientBuilder.HttpClientConfigCallback() {
@Override
public HttpAsyncClientBuilder customizeHttpClient(
HttpAsyncClientBuilder httpClientBuilder) {
return httpClientBuilder.setSSLContext(sslContext)
.setDefaultCredentialsProvider(credentialsProvider);
}
});
// Create the low-level client
RestClient restClient = builder.build();
// Create the transport with a Jackson mapper
ElasticsearchTransport transport = new RestClientTransport(
restClient, new JacksonJsonpMapper());
// And create the API client
ElasticsearchClient client = new ElasticsearchClient(transport);
return client;
}
중간에 아이디 패스워드의 경우 엘라스틱 초기 구동시 해당화면이 출력 된다.
해당 가져다 써도 되고 id/pw 초기화 하여 해당 써도 된다. 로컬디버깅 용도라 그냥 그대로 사용했다.
'자바' 카테고리의 다른 글
Groovy 이미지 변환 코드 (0) | 2023.07.30 |
---|---|
루씬 숫자형 인덱싱 출력 9.3.0 기준 (0) | 2022.10.07 |
vscode 이클립스 단축키 똑같이 하기 (0) | 2022.08.07 |
알파벳 배열 만들기 (0) | 2022.08.05 |
java stream 사용 주의할점 (0) | 2022.07.28 |
댓글()