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

时间:2017-08-06 09:14:25

标签: authentication curl elasticsearch

我正在使用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。而不是每次执行查询时都必须指定用户/密码?

3 个答案:

答案 0 :(得分:6)

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

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

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

答案 1 :(得分:0)

切出我最初的很多答案,因为您可能会说这全都是本地的,但在这里留下了有关安全性的主要抱怨:

  1. 绝对不要转到base64encode.org并输入您的用户名:password。实际上,在StackOverflow上建议使用此事实使该站点现在(对所有者而言非常可悲),并且由于人们知道人们会去那里,因此难以置信的多汁黑客攻击目标可以妥协。

答案 2 :(得分:0)

根据 Taran 的回答,如果您想生成 base64 令牌,可以通过以下命令进行:

echo -n 'username:pass' | openssl base64