Я не очень хорошо знаком с solr. Я успешно установил solr. Он использует веб-сервер причала. Моя версия Solr - 4.10.3. Страница администратора не защищена паролем. Любой может получить к нему доступ. Я хочу применить paaword к solr admin. Как я это сделаю?
Как установить пароль администратора Apache 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
Имя пользователя = admin пароль = s3cr3t. Имя роли = роль администратора
Solr версии 5+
В последней версии Solr изменилась структура папок. Вы найдете все файлы в пути к папке ниже.
{SOLR_HOME}/сервер/etc/jetty.xml {SOLR_HOME}/сервер/etc/webdefault.xml
Создайте новый файл учетных данных в {SOLR_HOME}/server/etc/realm.properties
:
admin: s3cr3t, admin-role
Для получения дополнительной информации вы можете помочь solr вики-документам
admin: s3cr3t, admin-role
. Я пытался добавить всю строку, потому что я нуб.
- person LandonC; 10.06.2015
etc
в /opt/solr
или ее подкаталогах. Подскажите пожалуйста решение для Solr 5
- person Ankit; 04.05.2016
core1-role
на admin-role
в webdefault.xml
- person seyfe; 13.12.2016
/opt/solr/server/solr-webapp/webapp/WEB-INF/web.xm
л, /opt/solr/server/etc/jetty.xml
и /opt/solr/server/etc/realm.properties
. Спасибо, вы спасли мой день.
- person Krishna Rani Sahoo; 12.07.2017
Включить аутентификацию в solr admin, работающем с solr 6.1 и jetty
Предварительное условие:
Солер версии 6.1
Solr успешно работает в системе
Solr Admin работает через пристань
Обработать:
<сильный>1. Изменить файл jetty.xml
Отредактируйте файл «server/etc/jetty.xml». Добавьте следующее перед окончанием тега Configure.
<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». Добавьте следующее перед тем, как тег web-app заканчивается.
<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>
Особое примечание:
Значение, используемое в теге role-name, должно быть таким же, как и в файле realm.properties.
<сильный>3. Создайте новый файл «realm.properties»
Создайте файл с именем «realm.properties» в папке «server/etc/» и поместите нижеследующее содержимое.
admin: admin123,core1-role
Имя пользователя: admin
Пароль: admin123
Название роли: core1-role
(Это должно совпадать с именем, используемым в теге role-name в файле server/etc/webdefault.xml)
<сильный>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 tomcat-users.xml изменяется, перейдите к файлу tomcat-users.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
Это примет все запросы от локального хоста (первая строка) и от самого IP-адреса сервера (вторая строка), но отбросит все остальные соединения (последняя строка). Вторая строка необязательна, но помогает нам найти легкий доступ к административному интерфейсу Solr. Чтобы получить доступ к интерфейсу администратора с локальной машины, мы должны сначала перенаправить все соединения на сервер. Самый простой способ сделать это — использовать sshuttle (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 и проксировал порт: 8983 на докер, где Nginx требует пароль. Это работает для меня.
Я должен просто сообщить, какое решение было в моем случае. На самом деле мой сайт был написан на ajax, поэтому установка пароля также защищает мой сайт. Так что это не решение в случае, когда solr должен использоваться в открытом Интернете. Таким образом, лучшим решением, согласно solr wiki, является использование прокси-серверов, таких как node.js, nginex и т. д. как указано здесь
Использование прокси-сервера node.js и применение правил iptable (как указано выше) решают мою проблему.