Как установить пароль администратора 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
предварительное условие:
Solr версии 6.1
Solr успешно работает в системе
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
.
если вы используете 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 (как указано выше) решают мою проблему.