簡體   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