web-dev-qa-db-fra.com

Accéder à l'application Tomcat Manager à partir d'un hôte différent

J'ai installé Tomcat 9 sur un serveur distant et après l'avoir démarré, tout a été correctement réglé, je peux accéder à http: // nom_hôte: numéro_port et voir la page Bonjour Tomcat. Mais lorsque j'essaie d'ouvrir l'application du gestionnaire pour voir mes applications déployées, l'accès à 403 est refusé, mais j'ajoute déjà des rôles dans l'utilisateur Tomcat xml, 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, Host Manager est uniquement accessible à partir d'un navigateur s'exécutant sur le même ordinateur que Tomcat. Si vous souhaitez modifier cette restriction, vous devez modifier le fichier context.xml du gestionnaire d’hôte .

Comment changer le fichier context.xml et avoir accès à l'application Manager?

71
feichangh

Chaque application Web déployée a un fichier context.xml qui réside dans

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

(conf/Catalina/localhost by default)

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

Vous devez donc créer un fichier conf/Catalina/localhost/manager.xml et spécifier la règle que vous souhaitez autoriser l’accès à distance. Par exemple, le contenu suivant de manager.xml permettra l'accès à partir de tous les ordinateurs:

<Context privileged="true" antiResourceLocking="false" 
         docBase="${catalina.home}/webapps/manager">
    <Valve className="org.Apache.catalina.valves.RemoteAddrValve" allow="^.*$" />
</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 se connectant. Les autres classes Valve répondent à d'autres règles (par exemple, RemoteHostValve pour les noms d'hôte correspondants).

Une fois que les modifications ci-dessus ont été apportées, une boîte de dialogue d'authentification doit 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 gestionnaire.

126
Matt Innes

Pour Tomcat version 8.5.4 et ultérieure, 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 la 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, actualisez votre navigateur (il n'est pas nécessaire de redémarrer Tomcat) pour afficher la page du gestionnaire.

134
jqgsninimo
Following two configuration is working for me.

1 .Tomcat-users.xml details
--------------------------------
  <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  of <Tomcat>/webapps/manager/META-INF/context.xml and 
<Tomcat>/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"/>
2
Rajeev kumar

Pour accéder au gestionnaire Tomcat depuis une machine différente, vous devez suivre les étapes ci-dessous:

1. Mettez à 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'administrateur administre rôles = "manager-gui, manager-script, manager-jmx, manager-status".

2. Mise à jour du fichier webapps/manager/META-INF/context.xml (adresse IP autorisée):

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, seule la machine locale IP à démarrer avec 127.\d +.\D +.\D +.

2.a: Autoriser une adresse IP spécifique:

<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 vous venez de remplacer YOUR.IP.ADDRESS.HERE avec votre adresse IP

2.b: Autoriser tous les IP:

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

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

Merci :)

1
Md. Sajedul Karim