我是Elastic Search的新手。通过Spring将我的Spring Boot应用程序与Elastic搜索集成在一起Java High Level Rest Client
。
我已经按照以下方式配置了JHLRC bean,它运行良好:
@Bean(destroyMethod = "close")
public RestHighLevelClient client() {
RestHighLevelClient client = new RestHighLevelClient(
RestClient.builder(new HttpHost("localhost", 9200, "http")));
return client;
}
在设置证书和密码之后,我开始探索Elasticsearch的安全性,我通过提供以下属性来启用安全性:
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: elastic-certificates.p12
我可以使用创建的用户名和密码登录kibana,但是在通过JHLRC命中任何Elastic search API时得到401 Unauthorized。
有人可以帮助我配置Java High Level Rest Client
弹性安全搜索时需要做哪些进一步的更改吗?
您需要包括在访问kibana时提供的基本凭证,以下代码显示您可以在JHLRC中传递用户名和密码。
首先,使用您的用户名和密码创建编码后的字符串,然后elastic
使用以下代码即可使用具有所有访问权限的超级用户。
private String getEncodedString(String username, String password) {
return HEADER_PREFIX + Base64.getEncoder().encodeToString(
(username + ":" + password)
.getBytes());
}
现在,在您的请求选项中,传递auth头,该头将包括从上述方法中获取的以64为基数的编码字符串。
RequestOptions.Builder builder = RequestOptions.DEFAULT.toBuilder()
.addHeader(AUTH_HEADER_NAME, getEncodedString(basicCredentials));
最后,您只需要构建上述请求选项构建器的对象,并在如下所示的任何请求中将其传递给客户端:
GetResponse getResponse = restHighLevelClient.get(getRequest, builder.build());
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句