J'ai configuré Tomcat 8 en fonction de this et j'ai le fichier Tomcat-users.xml suivant:
<?xml version="1.0" encoding="UTF-8"?>
<Tomcat-users xmlns="http://Tomcat.Apache.org/xml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://Tomcat.Apache.org/xml Tomcat-users.xsd"
version="1.0">
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<user username="notadmin" password="not_real_pass" roles="manager-gui"/>
<user username="cargo" password="not_real_pass" roles="manager-script"/>
<Tomcat-users/>
Lorsque j'essaie d'accéder à l'application Manager, je suis rejeté avec 403 sans demander de nom d'utilisateur ni de mot de passe.
Qu'est-ce qui m'a manqué dans la config?
Edit1: Ajout du fichier xml complet.
La réponse correcte peut être trouvée ici
On dirait que ce problème peut être reproduit en suivant le tutoriel mentionné sur les machines Unix. A également remarqué que l'auteur utilise TC 8.0.33
Win (et OSX) n’ont pas ce problème, du moins sur mon env:
Server version: Apache Tomcat/8.5.4
Server built: Jul 6 2016 08:43:30 UTC
Server number: 8.5.4.0
OS Name: Windows 8.1
OS Version: 6.3
Architecture: AMD64
Java Home: C:\TOOLS\jdk1.8.0_101\jre
JVM Version: 1.8.0_101-b13
JVM Vendor: Oracle Corporation
CATALINA_BASE: C:\TOOLS\Tomcat\Apache-Tomcat-8.5.4
CATALINA_HOME: C:\TOOLS\Tomcat\Apache-Tomcat-8.5.4
Après que Tomcat-users.xml
ait été modifié en ajoutant un rôle, l'utilisateur Tomcat Web Application Manager
est accessible sur Tomcat/8.5.4
.
Cela peut être un travail.
Recherchez le fichier CATALINA_HOME/webapps/manager/META-INF/context.xml
et ajoutez les marqueurs de commentaire autour de la vanne.<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>
Vous trouverez plus de détails sur cette page.
La solution qui a fonctionné pour moi est de modifier les fichiers context.xml
à la fois dans $CATALINA_HOME/webapps/manager/META-INF
et $CATALINA_HOME/webapps/Host-manager/META-INF
où mon adresse IP est 123.123.123.123
.
<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|123.123.123.123" />
</Context>
J'ai installé Tomcat 8.5 sur Ubuntu et édité $CATALINA_HOME/conf/Tomcat-users.xml
:
<role rolename="admin-gui"/>
<role rolename="manager-gui"/>
<user username="myuser" password="mypass" roles="admin-gui,manager-gui"/>
Cependant, je ne pouvais toujours pas accéder à Tomcat Web Application Manager (localhost:8080/manager/html
) et à Tomcat Virtual Host Manager (localhost:8080/Host-manager/html
) tant que je n'avais pas modifié les fichiers context.xml
.
Lien utile ici: Accéder à l'application Tomcat Manager à partir d'un hôte différent
À partir de la version 8 de Tomcat, l'URL manager/html ne sera accessible à personne à l'exception de localhost.
Pour accéder à/manager/html url, vous devez procéder ci-dessous à la modification dans le fichier context.xml de l’application de gestion . 1. Accédez à l'emplacement /Apache-Tomcat-8.5.23/webapps/manager/META-INF, puis éditez context.xml.
<Context antiResourceLocking="false" privileged="true" >
<Valve className="org.Apache.catalina.valves.RemoteAddrValve"
allow="^.*$" />
......
</Context>
Je dois modifier les fichiers suivants
$CATALINA_BASE/conf/Catalina/localhost/manager.xml
et ajouter la ligne suivante
<Context privileged="true" antiResourceLocking="false"
docBase="${catalina.home}/webapps/manager">
<Valve className="org.Apache.catalina.valves.RemoteAddrValve" allow="^.*$" />
</Context>
Cela permettra à Tomcat d'être accessible à partir de n'importe quel ordinateur. Si vous souhaitez accorder l'accès à une adresse IP spécifique, utilisez la valeur ci-dessous au lieu de allow="^.*$"
.
<Valve className="org.Apache.catalina.valves.RemoteAddrValve" allow="192\.168\.11\.234" />
Si cela ne vous convient pas, assurez-vous que Tomcat a accès au dossier du gestionnaire sous les applications Web (chown ...). Le message est exactement le même message et il m'a fallu 2 heures pour comprendre le problème. :-)
juste pour quelqu'un d'autre qui est venu ici pour le même problème que moi.
la réponse de Fade a fonctionné pour moi. Je suis passé de 8.0.30 à 8.5.5 et la différence était que la valve dans <8.0.30> /manager/META-INF/context.xml avait déjà été commentée depuis le fichier tar mais était sans commentaire dans 8.5.5 tar.
J'ai omis de lire ce message important dans la réponse 403:
Par défaut, le gestionnaire n'est accessible qu'à partir d'un navigateur Web exécuté sur la même machine que Tomcat. Si vous souhaitez modifier cette restriction, vous devrez modifier le fichier context.xml du gestionnaire.
Et omis de lire ceci aussi:
Depuis r1734267, une RemoteAddrValve.is est configurée par défaut dans Manager et applications Web HostManager. Cette fonctionnalité est présente dans 9.0.0.M4 et 8.5.0 et plus.
J'ai bêtement décommenté la configuration par défaut, qui a des mots de passe comme "". Tomcat ne parvient pas à analyser ce fichier (à cause du "<"), et quelle que soit la configuration que vous ajoutez ne fonctionnera
Allez vérifier si un utilisateur est créé ou non s'il vous plaît créer un utilisateur en ouvrant un fichier dans /Apache-Tomcat-9.0.20/Tomcat-users.xml y ajouter une ligne
<user username="Tomcat" password="Tomcat" roles="admin-gui,manager-gui,manager-script" />
Allez à /Apache-Tomcat-9.0.20/webapps/manager/META-INF/ open context.xml commentez tout dans l'exemple de balise contextuelle:
<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>
J'ai dû ajouter les rôles manager-gui et manager-script pour que cela fonctionne, dans la version 9.
Après avoir obtenu l'accès à MangerApp, en essayant de télécharger un fichier .war, j'ai eu l'exception
org.Apache.Tomcat.util.http.fileupload.FileUploadBase$IOFileUploadException
que j'ai pu résoudre en utilisant la réponse de ce post
Pour avoir accès à Host Manager, cochez cette case post
copier le contenu ci-dessous dans le fichier Tomcat-users.xml
<?xml version='1.0' encoding='utf-8'?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.Apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<Tomcat-users xmlns="http://Tomcat.Apache.org/xml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://Tomcat.Apache.org/xml Tomcat-users.xsd"
version="1.0">
<!--
NOTE: By default, no user is included in the "manager-gui" role required
to operate the "/manager/html" web application. If you wish to use this app,
you must define such a user - the username and password are arbitrary. It is
strongly recommended that you do NOT use one of the users in the commented out
section below since they are intended for use with the examples web
application.
-->
<!--
NOTE: The sample user and role entries below are intended for use with the
examples web application. They are wrapped in a comment and thus are ignored
when reading this file. If you wish to configure these users for use with the
examples web application, do not forget to remove the <!.. ..> that surrounds
them. You will also need to set the passwords to something appropriate.
-->
<!--
<role rolename="Tomcat"/>
<role rolename="role1"/>
<user username="Tomcat" password="<must-be-changed>" roles="Tomcat"/>
<user username="both" password="<must-be-changed>" roles="Tomcat,role1"/>
<user username="role1" password="<must-be-changed>" roles="role1"/>
-->
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<user username="notadmin" password="not_real_pass" roles="manager-gui"/>
<user username="cargo" password="not_real_pass" roles="manager-script"/>
</Tomcat-users>
J'ai testé, ça marche!
J'ai suivi le même tutoriel, mais après quelques mois, j'ai étrangement eu l'erreur "403 Access Denied" alors que j'essayais d'utiliser Manager App. Dans ce cas, j'utilisais l'adresse IP: 8080 dans la barre d'adresse et Tomcat Manager App ne demandait pas d'utilisateur/mot de passe. Dans le cas de localhost: 8080, l'erreur était "401", la boîte de dialogue demandant le nom d'utilisateur et le mot de passe était affichée, mais l'utilisateur n'était pas reconnu.
J'ai essayé toutes les suggestions précédentes/solutions sans chance. La seule façon dont j'ai trouvé est été de répéter à nouveau le tutoriel entier en écrasant également les fichiers. Une fois terminé, j'ai retrouvé l'ancien projet déployé dans le répertoire webapps. Maintenant, Apache Tomcat/8.5.16 Manager App fonctionne à nouveau. Je ne sais pas ce qui s'est passé Je ne comprenais pas aussi parce que je suis un débutant dans l'utilisateur Tomcat
J'avais le même problème en installant Tomcat dans docker . J'ai résolu en ajoutant "^. * $" Au lieu de "127.\d +.\D +.\D + | :: 1 | 0: 0: 0: 0 : 0: 0: 0: 1 | 123.123.123.123 "
Redémarrez le Tomcat.
Dans mon cas, c’était les contraintes de sécurité définies dans web.xml. Assurez-vous qu'ils ont les mêmes rôles que ceux que vous utilisez dans votre fichier Tomcat-users.xml
.
Par exemple, il s'agit d'une des balises prêtes à l'emploi qui fonctionnera avec le fichier Tomcat-users.xml standard.
<security-constraint>
<web-resource-collection>
<web-resource-name>HTML Manager interface (for humans)</web-resource-name>
<url-pattern>/html/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>manager-gui</role-name>
</auth-constraint>
</security-constraint>
Dans mon cas, un administrateur avait utilisé un nom de rôle différent, ce qui m'empêchait d'accéder au gestionnaire.
La bonne réponse est celle indiquée par @JaKu. Tomcat limite l'accès à localhost pour le sécuriser. C'est comme il se doit. La redirection de port vers Tomcat est la bonne chose à faire, de préférence sous un système sécurisé tel que SSH.