簡體   English   中英

使用授權將帶有太陽黑子的rails應用程序連接到tomcat / solr服務器

[英]Connecting a rails application with sunspot to a tomcat/solr server with authorization

好的,所以我有一個單獨的服務器與solr,這與應用程序完全正常。 使用通常的sunspot.yml我們有類似的東西:

production:
  solr:
    hostname: domain
    port: 8080
    log_level: WARNING
    path: path/to/data

問題是我想授權我的tomcat應用程序。 看來只要你知道域名和端口就可以去訪問solr / admin。 所以在我的tomcat web.xml中我添加了:

<security-constraint>
    <web-resource-collection>
      <web-resource-name> 
        Solr authenticated application
      </web-resource-name>
      <url-pattern>/*</url-pattern>
      <http-method>GET</http-method>
      <http-method>POST</http-method>
    </web-resource-collection>
    <auth-constraint>
      <role-name>role</role-name>
    </auth-constraint>
  </security-constraint>
   <login-config>
    <auth-method>BASIC</auth-method>
    <realm-name>REALM</realm-name>
  </login-config>
  <security-role>
    <description>ROLE NAME</description>
    <role-name>role</role-name>
  </security-role>

這將要求任何人在被授予訪問權限之前訪問solr / admin用戶名和密碼。 問題是如何告訴我的rails應用程序? 執行此操作后,當我的rails應用程序嘗試訪問solr服務器時,我得到了預期的“未授權”響應。 我知道它可能會進入sunspot.yml文件,但我需要添加什么?

我不確定Sunspot配置是否通過YAML支持Basic Auth用戶名和密碼。 這些選項都連接在一起,分配給Sunspot.config.solr.url ,然后提供給RSolr。 這是一個簡單的疏忽 - 歡迎來自https://github.com/outoftime/sunspot的拉取請求來解決這個問題。

您可以更好地在初始化Sunspot.config.solr.url直接分配Sunspot.config.solr.url ,或者通過環境變量指定URL。 Sunspot支持SOLR_URLWEBSOLR_URL環境變量,這樣做應保留Basic Auth用戶名和密碼。

要在開發環境中測試它:

rake sunspot:reindex SOLR_URL=http://admin:foobar@localhost:8983/solr
rails server SOLR_URL=http://admin:foobar@localhost:8983/solr

https://github.com/justinko/sunspot-rails-http-basic-auth

寶石安裝這個。 它對sunspot_rails的HTTP基本身份驗證支持。 然后,您可以將用戶名和密碼放在生成的sunspot.yml中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM