如何通过Java High Level Rest Client打安全弹性搜索

Dev Chauhan:

我是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弹性安全搜索时需要做哪些进一步的更改吗?

Opster Elasticsearch Ninja:

您需要包括在访问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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

ElasticSearch的Rest High Level Client如何使用“has_child”

如何使用 JAVA High Level Rest Client 获取索引中存在的文档总数

Elasticsearch:如何调用mustNot the same length as the array Java High Level REST Client

如何在Elastic High Level Rest Client中使用search_after进行分页

使用Rest High Level Client检索数据或将数据插入Elastic Search时发生SocketTimeoutException

elasticsearch-rest-high-client与elasticsearch-rest-client

Java rest 弹性搜索 json 文档

Elasticsearch Java High Rest Client构造具有多个匹配值和OR条件的布尔查询

通过 Highlevel Rest api 创建弹性搜索索引失败?

在AEM中使用Elasticsearch Rest High Client问题

使用Java低级Rest客户端进行弹性搜索

Spring Data弹性搜索与Java高级REST客户端

如何通过Jira REST Java Client获得项目的所有问题?

如何在Java Hight级Rest客户端的弹性搜索中执行范围查询?

如何在Java中使用rest API在弹性搜索中索引对象数组

如何通过Java高级Rest客户端在Elastic Search中使用多个字段进行搜索

通过Java程序在Advanced Rest Client中运行URL

如何为搜索指定admin_level?

为什么在弹性搜索中引入Java高级REST客户端?

如何通过弹性搜索查询“道具”表?

如何声明Rest Client异常?

如何通过Java检索JIRA rest api附件列表?

如何通过Oauth将POSTMAN rest client与magento REST api结合使用。如何获得令牌和令牌秘密?

我们应该使用哪个客户端(java或rest)在弹性搜索中为数据建立索引?

如何使我的Netbeans Java Rest Client访问Post方法?

JAVA 如何做 PUT 请求 REST Client

如何通过rest参数映射?

如何通过 Azure DevOps 上的 REST API 添加/更新用户对环境安全的权限?

如何通过REST API创建“安全角色”(角色实体)?