繁体   English   中英

Ruby On Rails:ElasticSearch 身份验证(Tire 和 ElasticSearch-rails)

[英]Ruby On Rails: ElasticSearch authentication (Tire and ElasticSearch-rails)

我在 Heroku 上部署了一个 Ruby On Rails 应用程序,我使用 ElasticSearch 附加组件,我的弹性搜索集群正常工作,但最近 ElasticSearch 附加组件要求所有集群强制执行身份验证以保护托管集群内部的数据,现在,在我们尝试提出的每个请求中,我们都会收到以下异常:

Tire::Search::SearchRequestFailed (401 : {"error":{"root_cause":[{"type":"security_exception","reason":"action [indices:data/read/search] requires authentication","header":{"WWW-Authenticate":"Basic realm=\\"shield\\" charset=\\"UTF-8\\""}}],"type":"security_exception","reason":"action [indices:data/read/search] requires authentication","header":{"WWW-Authenticate":"Basic realm=\\"shield\\" charset=\\"UTF-8\\""}},"status":401}):

我们从 Elasticsearch 附带的Shield插件配置了一些用户,但是我不确定如何从我的 ruby​​ On Rails 应用程序输入此身份验证,我使用 Tyre 将弹性搜索集成到我的 Ruby On Rails 应用程序中,但我找不到我是否可以将这些信息用于验证我的应用程序并解决此问题。

我们想知道如何使用这两个 gem 进行身份验证: ElasticSearch-railsTyre

我建议使用elasticsearch-rails而不是轮胎(废弃)。

使用elasticsearch-rails:

宝石文件

gem 'elasticsearch'
gem 'elasticsearch-model'
gem 'elasticsearch-rails'

模型可以搜索吗

特征提取模式 (可搜索关注点)应用于模型。

配置您的弹性搜索客户端

适用于使用通用URL格式通过auth进行config/initializers/elastic_search_client.rb的初始化器( config/initializers/elastic_search_client.rb或其他任何模型)中的所有模型

Elasticsearch::Client.new url: 'https://username:password@api.server.org:4430/search '

或使用哈希使用auth

Elasticsearch::Client.new hosts: [
  { host: 'my-protected-host',
    port: '443',
    user: 'USERNAME',
    password: 'PASSWORD',
    scheme: 'https'
  } ]

请查看高级客户端选项以获取更多信息。

注意:我并没有亲自测试它,这是理论,也许是缺少了一些,请查看elasticsearch-rails docs

我希望这有帮助。

您可以将ELASTICSEARCH_URL环境变量设置为https://USER:PASSWORD@some.domain:9200

这是有效的,因为由elasticsearch-rails gem 初始化的客户端实际上是elastic-transport-ruby gem 的客户端,并且这个 gem 的客户端将使用ELASTICSEARCH_URL环境变量,定义如下: https : //github.com/elastic /elastic-transport-ruby/blob/1dcb6c9db68dba70958e99d50e35a577d7d7f628/lib/elastic/transport/client.rb#L139-L144

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM