【问题标题】:How to perform token authentication in elasticsearch?如何在elasticsearch中执行令牌认证?
【发布时间】:2018-01-13 18:57:36
【问题描述】:

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

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

通过执行 curl ,一切正常:

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"
}'

但是有没有办法执行令牌请求(使用用户和密码),然后使用令牌查询 Elasticsearch。而不是每次执行查询时都必须指定用户/密码?

【问题讨论】:

    标签: authentication curl elasticsearch


    【解决方案1】:

    docker 镜像中的默认 X_Pack 启用了基本身份验证。这是你正在使用的。相同的令牌是 base64(用户:密码)。您可以使用http://base64encode.org 生成相同的内容并输入:。

    在 curl 中有两种方法可以调用 Basic auth URLs

    curl -XPUT -u elastic:elasticpassword "http://localhost:9200/movies/movie/1" -d''
    

    你已经在用了

    curl -H "Authorization: Basic ZWxhc3RpYzpjaGFuZ2VtZQ==" -XPUT "http://localhost:9200/movies/movie/1" -d'....'
    

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

    alias curles='curl  -u elastic:elasticpassword'
    

    之后你可以如下调用你的命令

    curles -XPUT "http://localhost:9200/movies/movie/1" -d''
    

    【讨论】:

    • 谢谢,您提出的第二个 curl 正是我想要的……但我仍然不知道您在哪里/如何生成和找到令牌:例如"ZWxhc3RpYzpjaGFuZ2VtZQ=="
    • 来自base64encode.org 网站。输入您的“用户名:密码”,然后单击编码。你会得到那个价值
    • 好的,基本上都是一样的方法......所以没有办法执行身份验证调用来生成与令牌关联的经过身份验证的会话?所以我可能只是依靠我的令牌->经过身份验证的会话,而不是每次调用都发送凭据....
    • 不在您使用的默认设置中。不确定您是否可以在 ElasticSearch 中为 OAuth2 或 JWT 配置其他一些身份验证插件
    • 看看这个网址是否有帮助elastic.co/blog/…
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      进一步向 Taran 的回答,如果你想生成 base64 令牌,你可以通过以下命令来实现:

      echo -n 'username:pass' | openssl base64
      

      【讨论】:

        【解决方案4】:
        curl -X GET --user myuser:mypassword "http://elasticsearch:9200/_cluster/health?pretty"
        

        在我上面的例子中 curl 有帮助

            {
          "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
        }
        

        【讨论】:

          猜你喜欢
          • 2020-06-22
          • 2015-12-07
          • 1970-01-01
          • 2020-04-22
          • 2016-07-26
          • 1970-01-01
          • 2020-09-25
          • 2017-04-20
          • 1970-01-01
          相关资源
          最近更新 更多