Comment définir le mot de passe admin d'Apache solr
Je ne suis pas très familier avec solr. J'ai installé solr avec succès. C'est à l'aide de la jetée de serveur web. Ma version solr est la 4.10.3. La page d'administration n'est pas protégée par mot de passe. N'importe qui peut y accéder. Je veux appliquer un paaword sur solr admin. Comment je vais faire?
6 réponses
Pour la version en dessous de 5
Si vous utilisez solr-webapp ensuite, vous devez modifier web.xml le fichier et ajouter ces lignes:
<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>
Pour le serveur Jetty, vous devez ajouter les lignes ci-dessous dans /exemple/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>
mise à Jour /exemple/etc/jetty.xml le fichier
<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
nom D'utilisateur = admin mot de passe = s3cr3t. Nom du rôle = Administrateur-rôle
Solr version 5+
dans la dernière version de Solr la structure des dossiers a été changée. Vous trouverez tous les fichiers dans le chemin des dossiers ci-dessous.
{SOLR_HOME}/server/etc / jetty.XML {SOLR_HOME} / server / etc / webdefault.xml
Créer un nouveau fichier des informations d'identification domaine.propriétés
{SOLR_HOME}/server/etc/realm.properties
admin: s3cr3t, admin-role
pour plus d'info vous pouvez aider solr wiki docs
Activer l'authentification dans solr admin en cours d'exécution avec solr 6.1 et jetée
Pré condition:
Solr version 6.1
Solr fonctionne avec succès dans le système
Solr Admin cours d'exécution à travers la jetée
Processus:
1. Modifier la jetée.xml
Modifier le fichier "serveur/etc/jetty.XML" Ajouter ce qui suit avant le configurer fin de l'étiquette
<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. Editer webdefault.xml
éditer le fichier "server/etc / webdefault.XML" Ajouter ce qui suit avant le Web-app fin de l'étiquette
<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>
Remarque:
Valeur utilisée dans le nom du rôle balise doivent être même utilisé dans " realm.les propriétés" le fichier
3. Créer nouveau fichier "realm.les propriétés"
Créer un fichier nommé "royaume.les propriétés" dans l'emplacement du serveur "/etc/" et de mettre le contenu ci-dessous
admin: admin123,core1-role
Nom D'Utilisateur: admin
Mot de passe: admin 123
nom du Rôle: core1-rôle
(ceci doit être identique au nom utilisé dans nom du rôle balise dans server/etc/webdefault.xml" fichier )
4. Final Étape
redémarrez le serveur Solr
maintenant, accédez à Solr dans votre navigateur http://localhost:8983/solr/
Vous trouverez le navigateur demande username
et password
. Entrez le username
et password
.
Si vous utilisez tomcat,
Open [Tomcat install dir]\tomcat-users.xml for editing.
Ajouter les lignes suivantes dans le <tomcat-user>
élément et enregistrer les modifications (à l'aide de votre propre nom d'utilisateur et mot de passe):
<role rolename="solr_admin"/><user username="your_username" password="your_password" roles="solr_admin"/>
Ouvrir le répertoire d'installation de Tomcat\webapps\solr\WEB-INF\web.xml pour l'édition.
"solr" dans le chemin d'accès est le nom de l'instance que vous souhaitez sécuriser. Généralement c'est "solr", mais peut être différent si vous exécutez un programme d'installation avancée.
Ajoutez les lignes suivantes dans le <web-app>
élément:
<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>
enregistrez les modifications et redémarrez Tomcat. Testez vos modifications en démarrant une nouvelle session de navigateur et en naviguant sur votre site, par exemple. http://localhost:8080/solr/ vous devriez être invité à vérifier vos références.
si votre Tomcat installe dir tomcat-users.xml est un fichier modifié ensuite allez sur Tomcat-users.fichier xml sous serveurs dans Project Explorer et y ajouter vos modifications.
comme définir un mot de passe à Solr est une plaie (désolé, mais il faut le nommer tel quel) je propose une autre solution: restreindre l'accès à L'aide de iptables
.
si vous installez Apache Solr Server habituellement le serveur écoutera sur le Port 8983. Par conséquent, l'interface d'administration des serveurs sera disponible sous:
http://YOUR_SERVERS_IP:8983/solr/
nous pouvons donc restreindre les connexions au port 8983 comme suit:
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
ceci acceptera toutes les requêtes de localhost (d'abord ligne) et de L'IP du serveur lui-même (deuxième ligne), mais supprimer toutes les autres connexions (dernière ligne). La deuxième ligne n'est pas nécessaire mais nous aide à trouver un accès facile à L'interface d'administration de Solr. Pour accéder à l'interface d'administration d'une machine locale, nous devons d'abord transmettre toutes les connexions au serveur. La façon la plus simple de le faire, est d'utiliser sshuttle (lazy mans VPN):
sshuttle --dns -r root@YOUR_SERVERS_IP 0/0
exécuter cette commande sur la machine locale, d'où nous voulons accéder à l'interface d'admin.
Une autre l'option est d'utiliser ssh
tunnels avec le client ssh:
ssh -D 1080 root@YOUR_SERVERS_IP
configurer un proxy de chaussettes dans votre navigateur pour le port 1080.
je fais face à Solr v. 4.10 aussi, et c'est vraiment gênant dur. Aucune des soi-disant" solutions " ne fonctionne pour moi. J'ai fini par installer Nginx sur ma boîte Ubuntu et proxy le port :8983 à docker, où le mot de passe est requis par Nginx. Cela fonctionne pour moi.
je viens d'informer quelle a été la solution dans mon cas. En fait mon site Web a été écrit en ajax c'est pourquoi en mettant passowrd protéger aussi mon site web. Donc ce n'est pas la solution dans le cas où solr doit être utilisé par l'internet ouvert. Ainsi sa meilleure solution comme guidé par solr wiki est d'utiliser des proxys comme nœud.js, nginex etc. comme donné ici
Utilisation du noeud.js proxy et l'application des règles iptable (comme guidé ci-dessus) résolvent mon problème.