130 votes

Accéder à l'application Tomcat Manager depuis un autre hôte

J'ai installé tomcat 9 sur un serveur distant et après l'avoir démarré, il s'est mis en route sans problème, j'ai accès à http://host_name:port_num et voir la page d'accueil de Tomcat. Mais quand j'essaie d'ouvrir l'application manager pour voir mes applications déployées, j'obtiens 403 access denied, j'ai déjà ajouté des rôles dans le xml de l'utilisateur de tomcat comme suit :

<role rolename="manager"/>
<role rolename="manager-gui"/>
<role rolename="admin"/>
<user username="user" password="password" roles="admin,manager,manager-gui"/>

Les messages d'erreur que j'ai vus sont :

Par défaut, le gestionnaire d'hôtes n'est accessible que depuis un navigateur fonctionnant sur la même machine que Tomcat. Si vous souhaitez modifier cette restriction, vous devrez éditer le fichier context.xml du gestionnaire d'hôte.

Comment modifier le fichier context.xml et obtenir l'accès à l'application manager ?

193voto

jqgsninimo Points 438

Pour Tomcat v8.5.4 et plus, le fichier <tomcat>/webapps/manager/META-INF/context.xml a été ajusté :

<Context antiResourceLocking="false" privileged="true" >
    <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
</Context>

Modifiez ce fichier pour commenter le Valve :

<Context antiResourceLocking="false" privileged="true" >
    <!--
    <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
    -->
</Context>

Après cela, rafraîchissez votre navigateur (il n'est pas nécessaire de redémarrer Tomcat), vous pouvez voir la page du gestionnaire.

1 votes

Fonctionne dans 8.5.0 mais un redémarrage était nécessaire. Merci !

3 votes

J'ai dû attendre environ 10-15 secondes, mais aucun redémarrage n'a été nécessaire dans la version 8.5.11. Merci !

2 votes

Cela a fonctionné dans 8.5.9 sans redémarrage. Cependant, il a fallu environ 15 secondes pour l'appliquer sur une machine Windows 7. Merci !

160voto

Matt Innes Points 1458

Chaque webapp déployée possède un context.xml qui se trouve dans

$CATALINA_BASE/conf/[enginename]/[hostname]

(conf/Catalina/localhost by default)

et a le même nom que la webapp ( manager.xml dans ce cas). Si aucun fichier n'est présent, les valeurs par défaut sont utilisées.

Donc, vous devez créer un fichier conf/Catalina/localhost/manager.xml et spécifiez la règle que vous voulez autoriser l'accès à distance. Par exemple, le contenu suivant de manager.xml permettra l'accès depuis toutes les machines :

<Context privileged="true" antiResourceLocking="false" 
         docBase="${catalina.home}/webapps/manager">
    <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="^YOUR.IP.ADDRESS.HERE$" />
</Context>

Notez que l'attribut "allow" de l'élément Valve est une expression régulière qui correspond à l'adresse IP de l'hôte qui se connecte. Remplacez donc votre adresse IP par VOTRE.ADRESSE.IP.ICI (ou toute autre expression utile).

Autre Valve les classes répondent à d'autres règles (par ex. RemoteHostValve pour les noms d'hôtes correspondants). Les versions antérieures de Tomcat utilisent une classe de valve org.apache.catalina.valves.RemoteIpValve pour la correspondance des adresses IP.

Une fois les modifications ci-dessus effectuées, une boîte de dialogue d'authentification devrait s'afficher lorsque vous accédez à l'URL du gestionnaire. Si vous entrez les détails que vous avez fournis dans tomcat-users.xml vous devriez avoir accès au Manager.

0 votes

Que faut-il faire pour charger ces changements de configuration sans arrêter et redémarrer tomcat ?

0 votes

403 Accès refusé

3 votes

Dans tomcat 8, vous n'avez rien à faire, ces changements de configuration prennent effet immédiatement.

41voto

mesuk 08308 Points 16

Pour accéder au gestionnaire de tomcat depuis les différentes machines, vous devez suivre les étapes suivantes :

1. Mettre à jour le fichier conf/tomcat-users.xml avec l'utilisateur et certains rôles :

<role rolename="manager-gui"/>
 <role rolename="manager-script"/>
 <role rolename="manager-jmx"/>
 <role rolename="manager-status"/>
 <user username="admin" password="admin" roles="manager-gui,manager-script,manager-jmx,manager-status"/>

Ici l'utilisateur admin assigne roles="manager-gui,manager-script,manager-jmx,manager-status" .

Ici l'utilisateur et le mot de passe de tomcat sont : admin

2. Mettre à jour le fichier webapps/manager/META-INF/context.xml (Autoriser l'adresse IP) :

Configuration par défaut :

<Context antiResourceLocking="false" privileged="true" >

  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />

  <Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/>
</Context>

Ici, dans Valve, seules les adresses IP des machines locales sont autorisées à démarrer avec le code suivant 127. \d +. \d +. \d + .

2.a : Autoriser les IP spécifiques :

<Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|YOUR.IP.ADDRESS.HERE" />

Ici, il suffit de remplacer |VOTRE.ADRESSE.IP.ICI avec votre adresse IP

2.b : Autoriser tous les IP :

<Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow=".*" />

Ici, en utilisant allow=".*" vous autorisez tous les IP.

Merci :)

1 votes

Veuillez ajouter une raison spécifique pour le vote négatif. Si cette réponse vous semble erronée, veuillez l'expliquer. Après votre explication, je pourrai améliorer mes connaissances. Merci

2 votes

Au lieu d'autoriser l'accès à une seule ip, vous pouvez ajouter l'accès à toutes les ip d'un réseau, en utilisant la même syntaxe que le fichier de default : <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127 \.\d + \.\d + \.\d +|::1|0:0:0:0:0:0:0:1|192 \.168\.250\ . \d +" /> ceci permet l'accès depuis tous les hôtes du réseau local 192.168.250.0/24

3 votes

Cette réponse est la seule qui spécifie YOUR.IP.ADDRESS.HERE - et répond ainsi véritablement à la question d'accéder à l'application manager à partir de a différents hôtes, et pas seulement de n'importe où sur Internet. IMHO, cela devrait plutôt être la réponse acceptée. Suggestion d'amélioration : Déplacer 2.a vers le haut, ajouter éventuellement la suggestion de @ThomasLIMIN.

6voto

Rajeev kumar Points 1

Les deux configurations suivantes fonctionnent pour moi.

  1. Détails de tomcat-users.xml


      <role rolename="manager-gui"/>
      <role rolename="manager-script"/>
      <role rolename="manager-jmx"/>
      <role rolename="manager-status"/>
      <role rolename="admin-gui"/>
      <role rolename="admin-script"/>
      <role rolename="tomcat"/>
    
      <user  username="tomcat"  password="tomcat" roles="tomcat"/>
    
      <user  username="admin"  password="admin" roles="admin-gui"/>
    
      <user  username="adminscript"  password="adminscrip" roles="admin-script"/>
    
      <user  username="tomcat"  password="s3cret" roles="manager-gui"/>
      <user  username="status"  password="status" roles="manager-status"/>
    
      <user  username="both"    password="both"   roles="manager-gui,manager-status"/>
    
      <user  username="script"  password="script" roles="manager-script"/>
      <user  username="jmx"     password="jmx"    roles="manager-jmx"/>
  2. context.xml de /webapps/manager/META-INF/context.xml et /webapps/host-manager/META-INF/context.xml


    <Context antiResourceLocking="false" privileged="true" >

      <Valve className="org.apache.catalina.valves.RemoteAddrValve"
             allow=".*" />
      <Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/>

0 votes

Cette réponse ne correspond pas à cette question

0voto

mmo Points 853

Comme j'ai dû l'apprendre à la dure, le défaut \etc\tomcat\server.xml (pour la v9.0.36 sur OpenSUSE v15.2 au moins) contenait déjà <Context ...> y <Valve ...> définitions pour les applications manager et host-manager ! Celles-ci annulent évidemment toute context.xml o manager.xml des fichiers que vous avez peut-être définis ailleurs. Par défaut, ils limitent l'accès à localhost, ce qui est exactement ce que je voyais. ||-Il faut donc ajuster les paramètres dans le fichier server.xml au lieu de OU les supprimer/commenter là et ensuite on peut ajouter les fichiers mentionnés dans les autres réponses comme on le faisait auparavant.

0 votes

Vous pourriez mentionner la distribution Linux que vous utilisez : le paquet Debian, par exemple hace ne définissez pas le gestionnaire de Tomcat dans /etc/tomcat/server.xml mais en /etc/tomcat/Catalina/localhost/manager.xml comme dans les autres réponses.

0 votes

Je l'ai ajouté à ma réponse. Merci de l'avoir signalé !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X