Подключение приложения rails с sunspot к серверу tomcat / solr с авторизацией - PullRequest
4 голосов
/ 07 апреля 2011

Ладно, у меня есть отдельный сервер с 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, но что мне нужно добавить?

Ответы [ 2 ]

7 голосов
/ 08 апреля 2011

Я не уверен, что конфигурация Sunspot поддерживает имя пользователя и пароль Basic Auth через YAML.Все эти опции объединяются вместе для присвоения Sunspot.config.solr.url, а затем передаются RSolr.Это простое упущение - можно было бы исправить это запрос на https://github.com/outoftime/sunspot.

Вам повезет больше, либо назначив Sunspot.config.solr.url непосредственно в инициализаторе, либо указав URL черезпеременная окружения.Sunspot поддерживает переменные среды SOLR_URL и WEBSOLR_URL, и при этом следует сохранить имя пользователя и пароль Basic Auth.

Чтобы проверить это в среде разработки:

rake sunspot:reindex SOLR_URL=http://admin:foobar@localhost:8983/solr
rails server SOLR_URL=http://admin:foobar@localhost:8983/solr
1 голос
/ 21 июля 2011

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

gem установить это. поддержка HTTP Basic Authentication для sunspot_rails. Затем вы можете поместить имя пользователя и пароль в созданный файл sunspot.yml.

...