web-dev-qa-db-fra.com

Comment définir le mot de passe administrateur Apache solr

Je ne connais pas très bien solr. J'ai installé solr avec succès. Il utilise jetty webserver. Ma version solr est 4.10.3. Sa page d'administration n'est pas protégée par mot de passe. Tout le monde peut y accéder. Je veux appliquer un paaword sur solr admin. Comment vais-je le faire?

21
Shafiq

Pour les versions inférieures à 5

Si vous utilisez solr-webapp, vous devez modifier le fichier web.xml 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 /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>

Mettre à jour le fichier /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

Nom d'utilisateur = admin mot de passe = s3cr3t. Nom du rôle = rôle-administrateur

Solr version 5 +

Dans la dernière version de Solr, la structure des dossiers a été modifiée. Vous trouverez tous les fichiers dans le chemin du dossier ci-dessous.

{SOLR_HOME} /server/etc/jetty.xml {SOLR_HOME} /server/etc/webdefault.xml

Créez un nouveau fichier d'informations d'identification à {SOLR_HOME}/server/etc/realm.properties:

admin: s3cr3t, admin-role

Pour plus d'informations, vous pouvez aider solr wiki docs

23
ManojP

Activer l'authentification dans solr admin fonctionnant avec solr 6.1 et jetty

Condition préalable:

  1. Solr version 6.1

  2. Solr fonctionne correctement dans le système

  3. Admin Solr passant par la jetée

Processus:

1. Modifier jetty.xml

Modifiez le fichier "server/etc/jetty.xml" Ajoutez ce qui suit avant la fin de la balise 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. Modifiez webdefault.xml

Modifiez le fichier "server/etc/webdefault.xml" Ajoutez ce qui suit avant la fin de la balise 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>

Remarque spéciale:

La valeur utilisée dans la balise nom-rôle doit être identique à celle utilisée dans "realm.properties" fichier

3. Créez un nouveau fichier "realm.properties"

Créez un fichier nommé "realm.properties" à l'emplacement "server/etc /" et mettez le contenu ci-dessous

admin: admin123,core1-role

Nom d'utilisateur: admin

Mot de passe: admin123

Nom du rôle: core1-role

(Il doit être identique au nom utilisé dans la balise role-name dans le fichier server/etc/webdefault.xml ”)

4. Étape finale

Redémarrez le serveur Solr

Accédez maintenant à Solr dans votre navigateur http: // localhost: 8983/solr / Vous constaterez que le navigateur demande username et password. Saisissez username et password.

enter image description here

24
Suman-PHP4U

Si vous utilisez Tomcat,

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

Ajoutez les lignes suivantes dans le <Tomcat-user> élément et enregistrez les modifications (en utilisant votre propre nom d'utilisateur et mot de passe):

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

Ouvrez le répertoire d'installation de Tomcat\webapps\solr\WEB-INF\web.xml pour le modifier. "solr" dans le chemin est le nom de l'instance que vous souhaitez sécuriser. Il s'agit généralement de "solr", mais peut être différent si vous exécutez une configuration 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 accédant à votre site, par exemple. http: // localhost: 8080/solr / Vous devez être invité à fournir vos informations d'identification.

Si votre fichier d'installation du répertoire d'installation Tomcat Tomcat-users.xml est en cours de modification, accédez au fichier Tomcat-users.xml sous Serveurs dans l'Explorateur de projets et ajoutez-y vos modifications.

6
ThmHarsh

Étant donné que la définition d'un mot de passe pour Solr est pénible (désolé, mais il faut un certain temps pour le nommer tel quel), je propose une autre solution: restreindre l'accès à l'aide de iptables.

Si vous installez Apache Solr Server, le serveur écoutera généralement 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

Cela acceptera toutes les demandes de l'hôte local (première ligne) et de l'IP du serveur lui-même (deuxième ligne), mais supprimera 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 à partir 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 (VPN paresseux):

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'administration. Une autre option consiste à utiliser le tunneling ssh avec le client ssh ouvert:

ssh -D 1080 root@YOUR_SERVERS_IP

Configurez un proxy de chaussettes dans votre navigateur sur le port 1080.

4
user5950

Je m'occupe également de Solr v.4.10 et c'est vraiment très ennuyeux. 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 vers docker, où le mot de passe est requis par Nginx. Cela fonctionne pour moi.

0
user2752286

Je dois juste informer de la solution dans mon cas. En fait, mon site Web a été écrit en ajax, c'est pourquoi en définissant passowrd, vous protégez également mon site Web. Ce n'est donc pas la solution dans le cas où solr doit être utilisé par Internet ouvert. Donc, sa meilleure solution comme guidé par wiki solr est d'utiliser des proxies comme node.js, nginex etc. comme indiqué ici

L'utilisation du proxy node.js et l'application de règles iptables (comme indiqué ci-dessus) résolvent mon problème.

0
Shafiq