如何在Elasticsearch中执行令牌认证?

Nic*_*rtn 7 authentication curl elasticsearch

我正在使用Docker官方映像在开发模式下测试Elasticsearch。

基本安装基于X_pack和基本身份验证。

通过执行卷曲,一切工作正常:

curl -XPUT -u elastic:elasticpassword "http://localhost:9200/movies/movie/1" -d'
{
  "title": "The Godfather",
  "director": "Francis Ford Coppola",
  "year": 1972, "user":"elastic", "password":"changeme"
}'
Run Code Online (Sandbox Code Playgroud)

但是有一种方法可以执行令牌请求(使用用户名和密码),然后使用令牌查询Elasticsearch。不必在每次执行查询时都指定用户名/密码?

Tar*_*ani 11

Docker映像中的默认X_Pack启用了基本身份验证。您正在使用哪个。相同的令牌是base64(user:password)。您可以使用http://base64encode.org并输入:来生成相同的内容。

在curl中,有两种方法可以调用基本身份验证URL

curl -XPUT -u elastic:elasticpassword "http://localhost:9200/movies/movie/1" -d''
Run Code Online (Sandbox Code Playgroud)

您已经在使用

curl -H "Authorization: Basic ZWxhc3RpYzpjaGFuZ2VtZQ==" -XPUT "http://localhost:9200/movies/movie/1" -d'....'
Run Code Online (Sandbox Code Playgroud)

现在,如果您的问题是一遍又一遍地输入,那么最好在bash配置文件中创建一个别名,如下所示

alias curles = 'curl  -u elastic:elasticpassword'
Run Code Online (Sandbox Code Playgroud)

之后,您可以按以下方式调用命令

curles -XPUT "http://localhost:9200/movies/movie/1" -d''
Run Code Online (Sandbox Code Playgroud)


小智 6

删掉很多我原来的答案,因为你可能会争辩说这都是本地的,但在这里留下一个关于安全的主要抱怨:

  1. 绝对不要去 base64encode.org 并输入您的用户名:密码。在 StackOverflow 上建议的这一事实使该网站现在(对所有者来说可悲)和令人难以置信的多汁黑客攻击目标成为妥协,因为他们知道人们会去那里。


Man*_*Ali 6

curl -X GET --user myuser:mypassword "http://elasticsearch:9200/_cluster/health?pretty"
Run Code Online (Sandbox Code Playgroud)

就我而言,上面的卷曲有帮助

    {
  "cluster_name" : "elasticsearch",
  "status" : "green",
  "timed_out" : false,
  "number_of_nodes" : 1,
  "number_of_data_nodes" : 1,
  "active_primary_shards" : 16,
  "active_shards" : 16,
  "relocating_shards" : 0,
  "initializing_shards" : 0,
  "unassigned_shards" : 0,
  "delayed_unassigned_shards" : 0,
  "number_of_pending_tasks" : 0,
  "number_of_in_flight_fetch" : 0,
  "task_max_waiting_in_queue_millis" : 0,
  "active_shards_percent_as_number" : 100.0
}
Run Code Online (Sandbox Code Playgroud)