Как установить пароль администратора Apache solr

Я не очень хорошо знаком с solr. Я успешно установил solr. Он использует веб-сервер jetty. Моя версия solr-4.10.3. Страница IT admin не защищена паролем. Любой может получить к нему доступ. Я хочу применить paaword к администратору solr. Как я это сделаю?

6 ответов


для версии ниже 5

если вы используете solr-webapp, вам нужно изменить web.в XML файл и добавьте эти строки:

<security-constraint>
    <web-resource-collection>
      <web-resource-name>Solr Lockdown</web-resource-name>
      <url-pattern>/</url-pattern>
    </web-resource-collection>
    <auth-constraint>
      <role-name>solr_admin</role-name>
      <role-name>admin</role-name>
    </auth-constraint>
  </security-constraint>
  <login-config>
    <auth-method>BASIC</auth-method>
    <realm-name>Solr</realm-name>
  </login-config> 

для сервера Jetty вам нужно добавить следующие строки в / example/etc / webdefault.в XML

<security-constraint>
    <web-resource-collection>
      <web-resource-name>Solr authenticated application</web-resource-name>
      <url-pattern>/</url-pattern>
    </web-resource-collection>
    <auth-constraint>
      <role-name>**admin-role**</role-name>
    </auth-constraint>
  </security-constraint>

  <login-config>
    <auth-method>BASIC</auth-method>
    <realm-name>Test Realm</realm-name>
  </login-config>

обновление / example / etc / jetty.в XML

<Call name="addBean">
      <Arg>
        <New class="org.eclipse.jetty.security.HashLoginService">
          <Set name="name">Test Realm</Set>
          <Set name="config"><SystemProperty name="jetty.home" default="."/>/etc/realm.properties</Set>
          <Set name="refreshInterval">0</Set>
        </New>
      </Arg>
    </Call>

/example/etc/realm.properties :

admin: s3cr3t, admin-role

Username = admin пароль= s3cr3t. Имя роли = admin-роль

Solr версия 5+

в последней версии Solr структура папок изменилась. Вы найдете все файлы в папку-путь.

{SOLR_HOME} / server / etc / jetty.XML {SOLR_HOME}/сервер/и т. д./webdefault.в XML

создать новый файл учетных данных realm.свойства at

{SOLR_HOME}/server/etc/realm.properties
admin: s3cr3t, admin-role

для получения дополнительной информации вы можете помочь solr wiki docs


включить аутентификацию в Solr admin, работающем с solr 6.1 и jetty

предварительное условие:

  1. Solr версии 6.1

  2. Solr успешно работает в системе

  3. Solr Admin работает через причал

процесс:

1. Редактировать причал.в XML

редактировать файл "сервер / etc / jetty.XML" Добавьте следующее Перед настроить и заканчивается тегом

<Call name="addBean">
      <Arg>
        <New class="org.eclipse.jetty.security.HashLoginService">
          <Set name="name">Test Realm</Set>
          <Set name="config"><SystemProperty name="jetty.home" default="."/>/etc/realm.properties</Set>
          <Set name="refreshInterval">0</Set>
        </New>
      </Arg>
    </Call>

2. Редактировать webdefault.в XML

редактировать файл " server / etc / webdefault.XML" Добавьте следующее Перед веб-приложение и заканчивается тегом

<security-constraint>
    <web-resource-collection>
      <web-resource-name>Solr authenticated application</web-resource-name>
      <url-pattern>/</url-pattern>
    </web-resource-collection>
    <auth-constraint>
      <role-name>core1-role</role-name>
    </auth-constraint>
  </security-constraint>

  <login-config>
    <auth-method>BASIC</auth-method>
    <realm-name>Test Realm</realm-name>
  </login-config>

Примечание:

значение, используемое в роль-имя тег должен использоваться в "realm.свойства"

3. Создавать новый файл "царство.свойства"

создайте файл с именем "realm.свойства "в местоположении" server / etc / " и поместите ниже содержимое

admin: admin123,core1-role

Имя Пользователя: admin

пароль: admin123

имя роли: core1-роль

(это должно совпадать с именем, используемым в роль-имя тег в server / etc / webdefault.xml " file)

4. Окончательный Шаг

перезапустить сервер Solr

теперь доступ Solr в вашем браузере http://localhost:8983/solr/ Вы найдете браузер просит username и password. Введите username и password.

enter image description here


если вы используете tomcat,

Open [Tomcat install dir]\tomcat-users.xml for editing.

добавьте следующие строки в <tomcat-user> элемент и сохранить изменения (используя свой собственный логин и пароль):

<role rolename="solr_admin"/><user username="your_username"  password="your_password"  roles="solr_admin"/>

откройте Tomcat install dir\webapps\solr\WEB-INF\web.XML для редактирования. "solr" в пути-это имя экземпляра, который вы хотите защитить. Обычно это "solr", но может отличаться, если вы используете расширенную настройку. Добавьте следующие строки в <web-app> элемент:

<security-constraint>
<web-resource-collection>
  <web-resource-name>Solr Lockdown</web-resource-name>
  <url-pattern>/</url-pattern>
</web-resource-collection>
<auth-constraint>
  <role-name>solr_admin</role-name>
  <role-name>admin</role-name>
</auth-constraint>
</security-constraint>


<login-config>
<auth-method>BASIC</auth-method>
<realm-name>Solr</realm-name></login-config>

сохраните изменения и перезапустите Tomcat. Проверьте свои изменения, запустив новый сеанс браузера и перейдя на свой сайт, например. http://localhost:8080/solr/ вам будет предложено ввести учетные данные.

если ваш Tomcat установить dir tomcat-пользователи.XML-файл модифицируется, то перейти к tomcat-пользователям.xml-файл под серверами в Project Explorer и добавьте туда свои изменения.


поскольку установка пароля на Solr-это боль в заднице (извините, но некоторое время вы должны назвать его так, как есть), я предлагаю другое решение: ограничить доступ к нему с помощью iptables.

если вы устанавливаете сервер Apache Solr, обычно сервер будет слушать порт 8983. Следовательно, интерфейс администратора серверов будет доступен в разделе:

http://YOUR_SERVERS_IP:8983/solr/

таким образом, мы можем ограничить соединения с портом 8983 следующим образом:

iptables -A INPUT -p tcp -s localhost --dport 8983 -j ACCEPT
iptables -A INPUT -p tcp -s YOUR_SERVERS_IP --dport 8983 -j ACCEPT
iptables -A INPUT -p tcp --dport 8983 -j DROP

это будет принимать все запросы от localhost (сначала line) и с самого IP сервера (вторая строка), но отбросьте все остальные соединения (последняя строка). Вторая строка не нужна, но помогает нам найти легкий доступ к интерфейсу администратора Solr. Чтобы получить доступ к интерфейсу администратора локальной машины, мы должны сначала переслать все соединения на сервер. Самый простой способ сделать это-использовать sshuttle (lazy mans VPN):

sshuttle --dns -r root@YOUR_SERVERS_IP 0/0

выполнение этой команды на локальном компьютере, откуда мы хотим получить доступ к интерфейсу администратора. Другой опция, чтобы использовать ssh туннелирование с открытым ssh-клиентом:

ssh -D 1080 root@YOUR_SERVERS_IP

настройте прокси-сервер socks в браузере на порт 1080.


Я имею дело с Solr V. 4.10 тоже, и это действительно раздражающе трудно. Ни одно из так называемых "решений" не работает для меня. Я закончил установку Nginx на моем Ubuntu box и прокси-порт: 8983 в docker, где пароль требуется Nginx. Это работает для меня.


Я просто должен сообщить, что было решением в моем случае. На самом деле мой сайт был написан в ajax, поэтому, установив passowrd, также защитите мой сайт. Так что это не решение в случае, когда solr должен использоваться открытым интернетом. Так что его лучшее решение, как руководствуется solr wiki использовать прокси, такие как node.Яш, nginex и т. д. как дано здесь

через узел.прокси-сервер js и применение правил iptable (как указано выше) решают мою проблему.