J'essaie de me connecter à l'application Manager dans Tomcat 7.0.22 pour Mac OS X 10.7. Voici l'erreur que je reçois: http://f.cl.ly/items/421q1K3f1i0X1H1M181v/so.tiff
401 Unauthorized
You are not authorized to view this page. If you have not changed any configuration files, please examine the file conf/Tomcat-users.xml in your installation. That file must contain the credentials to let you use this webapp.
For example, to add the manager-gui role to a user named Tomcat with a password of s3cret, add the following to the config file listed above.
<role rolename="manager-gui"/>
<user username="Tomcat" password="s3cret" roles="manager-gui"/>
J'ai ajouté ceci dans mon Tomcat-users.xml, cela ne prend toujours pas le même nom d'utilisateur/mot de passe.
<Tomcat-users>
<role rolename="manager-gui"/>
<user name="Tomcat" password="s3cret" roles="standard,manager-gui"/>
</Tomcat-users>
Désolé, je dois poser la question évidente: avez-vous redémarré Tomcat?
Si cela ne fonctionne pas, essayez d'ajouter "admin-gui" à vos rôles:
<user name="Tomcat" password="s3cret" roles="admin-gui,standard,manager-gui"/>
OK, j'ai eu cette erreur aussi. Impossible de trouver le bogue, impossible de trouver le bogue, impossible de le trouver. Mon bloc "Tomcat-users" ressemblait à ceci.
<Tomcat-users>
<role rolename="manager-gui"/>
<user name="Tomcat" password="s3cret" roles="standard,manager-gui"/>
</Tomcat-users>
FINALEMENT TROUVÉ LE BUG. J'ai continué à éditer le bloc de commentaires XMLinsideXML:
<!--
<Tomcat-users>
<role rolename="manager-gui"/>
<user name="Tomcat" password="s3cret" roles="standard,manager-gui"/>
</Tomcat-users>
-->
DOH!
Alors: n'oubliez pas de supprimer les "<! -" et "->".
J'ai aussi rencontré ce problème. Le contenu de mon Tomcat-users.xml était correct, mais le fichier n'était pas lisible par Tomcat. J'ai changé le groupe de fichiers en Tomcat7, redémarré Tomcat et le tour est joué!
Voici le contenu de mon Tomcat-users.xml:
<?xml version='1.0' encoding='utf-8'?>
<Tomcat-users>
<user username="admin" password="admin" roles="manager-gui, admin-gui" />
</Tomcat-users>
Pour clarifier, voici les rôles que vous devez ajouter à votre fichier conf/Tomcat-users.xml à partir de Tomcat 7.x. Si vous souhaitez conserver les commentaires que vous pouvez, mais que c'est tout ce dont vous avez besoin (pour vous connecter avec admin/admin) dans le fichier:
<?xml version="1.0" encoding="UTF-8"?>
<Tomcat-users>
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>
<role rolename="admin-gui"/>
<role rolename="admin-script"/>
<user username="admin" password="admin" roles="manager-gui, manager-script, manager-jmx, manager-status, admin-gui, admin-script"/>
</Tomcat-users>
Vérifiez les lignes exactes dans server.xml
<Realm className="org.Apache.catalina.realm.LockOutRealm">
<Realm className="org.Apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
Navdeep
J'ai eu la même erreur alors j'ai changé le mot de passe dans users.xml. Cela a résolu. Si vous utilisez des caractères spéciaux comme &. Ça ne marche pas Enlevez-le.
Si vous êtes à Tomcat 8, il vous manque peut-être les éléments suivants. Je me suis battu avec cela pendant un certain temps… .. Après la mise à jour de Realms et de Tomcat-users.xml, vous devez également modifier le fichier apps context.xml.
"Par défaut, les versions les plus récentes de Tomcat restreignent l'accès aux applications Manager et Host Manager aux connexions provenant du serveur lui-même. Étant donné que nous installons sur un ordinateur distant, vous souhaiterez probablement supprimer ou modifier cette restriction. restrictions sur ceux-ci, ouvrez les fichiers context.xml appropriés. "
Pour l'application Manager -
/webapps/manager/META-INF/context.xml
Pour l'application Host-Manager -
/opt/Tomcat/webapps/Host-manager/META-INF/context.xml
Commentez la section suivante pour Valve comme suit-
<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 devriez être tous ensemble après cela.
Il est peu probable que quelqu'un ait commis la même erreur que moi, mais si vous avez plusieurs versions de Tomcat (ou si vous avez faussé l'installation et avez les fichiers à nettoyer), assurez-vous d'être dans le bon dossier.
Je cherchais le fichier de configuration dans C:\Tomcat7 \, mais le serveur Tomcat en cours d’exécution se trouvait dans C:\Program Files\Apache Software Foundation\Tomcat 7.0 \
Dans Windows, une variable d’environnement CATALINA_HOME avait été définie pour une autre installation de Tomcat. C’était pourquoi, même si j’utilisais le script de démarrage dans le nouveau dossier d’installation. Il suffit donc de supprimer CATALINA_HOME pour résoudre le problème.
Changer le port de 8080 à 8088 dans server.xml a fonctionné pour moi.Refer le code ci-dessous
<Connector port="8088" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
Vérifiez également que vous avez défini correctement les variables d’environnement Tomcat_HOME et Java_HOME.
Vérifiez votre navigateur.
J'exécutais Tomcat localement sous Windows et j'essayais de me connecter à l'aide de Chrome. Aucune des suggestions ci-dessus ne semblait fonctionner. Enfin, sur un coup de tête, j'ai essayé Firefox et obtenu l'invite de connexion! J'ai redémarré Chrome et essayé à nouveau, et toujours rien. Il semble que notre stratégie de réseau visse Chrome - bloquant probablement la boîte de dialogue de connexion contextuelle.
Je devais décommenter ceci dans server.xml:
<Resource name="UserDatabase" auth="Container"
type="org.Apache.catalina.UserDatabase"
description="User database that can be updated and saved"
factory="org.Apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/Tomcat-users.xml" />
Je pensais que je venais de nettoyer la configuration d'un exemple de source de données, mais j'avais tort :)
Je recevais exactement la même erreur et cela ne fonctionnait qu'après avoir changé le port du connecteur de 8080 à 8081.
Juste pour ajouter des informations sur la réponse de @ David:
Si vous êtes comme moi et SFTP sur l'hôte avec un utilisateur appartenant à un groupe autre que Tomcat (par exemple, root) et éditez Tomcat_users.xml
avec un éditeur générique tel que gedit ou VS Code, le groupe du fichier sera changé en utilisateur (probablement parce qu'un nouveau fichier a été créé). Comme ci-dessous:
drwxr-x--- 2 root Tomcat 4096 Jun 21 11:41 ./
drwxr-xr-x 9 root Tomcat 4096 May 24 14:12 ../
-rw-r----- 1 root Tomcat 13531 Apr 28 03:34 catalina.policy
-rw-r----- 1 root Tomcat 7202 Apr 28 03:34 catalina.properties
-rw-r----- 1 root Tomcat 1400 Apr 28 03:34 context.xml
-rw-r----- 1 root Tomcat 1149 Apr 28 03:34 jaspic-providers.xml
-rw-r----- 1 root Tomcat 2313 Apr 28 03:34 jaspic-providers.xsd
-rw-r----- 1 root Tomcat 3850 Apr 28 03:34 logging.properties
-rw-r----- 1 root Tomcat 7511 Apr 28 03:34 server.xml
-rw-r----- 1 root root 2342 Jun 21 11:41 Tomcat-users.xml
-rw-r----- 1 root Tomcat 2633 Apr 28 03:34 Tomcat-users.xsd
-rw-r----- 1 root Tomcat 170202 Apr 28 03:34 web.xml
Peut-être que ma configuration initiale de Tomcat était un peu désinvolte ... Mais avec le comportement ci-dessus, Tomcat perdra l'accès au fichier modifié. Le résultat serait 401 non autorisé.
Il existe plusieurs options pour résoudre le problème. Je ne suis pas sûr si l'un d'entre eux est la meilleure pratique cependant.
Dans mon cas, j'avais plusieurs sections <Engine><Host>...</Host></Engine>
dans mon context.xml
et je devais copier et coller le <Realm className="org.Apache.catalina.realm.LockOutRealm">...</Realm>
dans chaque section <Engine>...</Engine>
car l'application de gestionnaire était déployée dans chacun de ces hôtes qui faisaient partie d'une Engine
séparée.
La réponse de @swapnil chaudhari à propos de la restriction d'adresse IP dans le META-INF/context.xml
de l'application est également utile, mais j'ai trouvé plus avantageux de remplacer la Context
dans le server.xml
de mon serveur.
En fin de compte, j'ai quelque chose comme ceci pour chacun de mes Engines
:
<Engine name="CatalinaMyUniqueEngine"
defaultHost="MyUniqueHost">
<Realm className="org.Apache.catalina.realm.LockOutRealm">
<Realm className="org.Apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
<Host name="MyUniqueHost"
appBase="/opt/Tomcat/webapps/MyUniqueHost"
unpackWARs="true" autoDeploy="true">
<Context path="/manager" privileged="true" antiResourceLocking="false"
docBase="manager">
<!-- Wider allowance than the default.
Or you can remove to allow all IPs, which probably isn't
a good idea. -->
<Valve className="org.Apache.catalina.valves.RemoteAddrValve"
allow="127\.0\.0\.1|10\.244\.\d+.\d+" />
</Host>
</Engine>
docBase
est relative à appBase
. Dans /opt/Tomcat/webapps/MyUniqueHost
, j'ai un lien symbolique vers l'application de gestionnaire installée par le gestionnaire de paquets de mon système (basé sur Debian), qui l'a placé à /usr/share/Tomcat8-admin/manager
. Ces liens symboliques me permettent d’utiliser l’application du gestionnaire dans toutes mes Hosts
sans copier l’application du gestionnaire.