Ответ 1
Извините, я должен спросить очевидное: вы перезапустили Tomcat?
Если это не сработает, попробуйте добавить "admin-gui" к своим ролям:
<user name="tomcat" password="s3cret" roles="admin-gui,standard,manager-gui"/>
Я пытаюсь войти в приложение Manager в Tomcat 7.0.22 для Mac OS X 10.7. Вот ошибка, которую я получаю: 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"/>
Я добавил это в мой tomcat-users.xml, но все еще не использовал то же имя пользователя и пароль.
<tomcat-users>
<role rolename="manager-gui"/>
<user name="tomcat" password="s3cret" roles="standard,manager-gui"/>
</tomcat-users>
Извините, я должен спросить очевидное: вы перезапустили Tomcat?
Если это не сработает, попробуйте добавить "admin-gui" к своим ролям:
<user name="tomcat" password="s3cret" roles="admin-gui,standard,manager-gui"/>
Хорошо, у меня тоже была эта ошибка. Не удалось найти ошибку, не удалось найти ошибку, не удалось найти ошибку. Мой блок "tomcat-users" выглядел так же.
<tomcat-users>
<role rolename="manager-gui"/>
<user name="tomcat" password="s3cret" roles="standard,manager-gui"/>
</tomcat-users>
НАКОНЕЦ НАЙДЕНО. Я продолжал редактировать XML внутри блок комментариев XML:
<!--
<tomcat-users>
<role rolename="manager-gui"/>
<user name="tomcat" password="s3cret" roles="standard,manager-gui"/>
</tomcat-users>
-->
DOH!
Итак: не забудьте удалить "<!" и "- > ".
Я также столкнулся с этой проблемой. Содержимое моего tomcat-users.xml было правильным, но Tomcat не читал этот файл. Я изменил группу файлов на tomcat7, перезапустил Tomcat и voilà!
Здесь содержимое моего tomcat-users.xml:
<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
<user username="admin" password="admin" roles="manager-gui, admin-gui" />
</tomcat-users>
Чтобы добавить некоторую ясность, вот роли, которые вам нужно добавить в ваш conf/tomcat-users.xml с Tomcat 7.x. Если вы хотите сохранить комментарии, вы можете, но это все, что вам нужно (для входа в систему с администратором /admin ) в файле:
<?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>
Проверьте точные строки в server.xml
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
Navdeep
Его маловероятно, что кто-то совершил ту же ошибку, что и я, но если у вас есть несколько версий tomcat (или увязли с установкой и у вас есть файлы, необходимые для очистки), убедитесь, что вы находитесь в правильной папке.
Я смотрел конфигурационный файл в C:\tomcat7 \, но фактический Tomcat, который был запущен, был в C:\Program Files\Apache Software Foundation\Tomcat 7.0\
Если вы находитесь на Tomcat 8, возможно, вам не хватает следующего. После обновления Realms
и tomcat-users.xml
вам также необходимо отредактировать context.xml
приложений.
По умолчанию более новые версии Tomcat ограничивают доступ к приложениям Manager и Host Manager для подключений, исходящих с самого сервера. Поскольку мы устанавливаем на удаленном компьютере, вы, вероятно, захотите снять или изменить это ограничение. Чтобы изменить ограничения IP-адресов, откройте соответствующие файлы context.xml.
Для приложения Manager:
/webapps/manager/META-INF/context.xml
Для приложения Host-Manager:
/opt/tomcat/webapps/host-manager/META-INF/context.xml
Закомментируйте следующий раздел для клапана как follows-
<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>
Вы должны быть готовы после этого.
У меня была та же ошибка, тогда я сменил пароль в users.xml. Это решено. Если вы используете специальные символы, такие как &
или @
. Не работает Убери это.
Проверьте ваш браузер.
Я запускал tomcat локально в Windows и пытался войти в систему, используя Chrome. Ни одно из предложенных выше предложений не сработало. Наконец, по какой-то причине, я попробовал Firefox и получил приглашение для входа! Я перезапустил Chrome и попробовал снова, но ничего не вышло. Похоже, наши винты сетевой политики с Chrome - возможно, блокирует всплывающее диалоговое окно входа в систему.
Я получал точно такую же ошибку, и он начал работать только после того, как я изменил порт разъема с 8080 на 8081.
Также убедитесь, что вы правильно установили параметры TOMCAT_HOME, а также переменные среды JAVA_HOME.
Мне пришлось раскомментировать это в файле 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" />
Я думал, что просто очищаю конфигурацию примера источника данных, но я ошибся:)
В Windows у меня была переменная среды CATALINA_HOME, определенная для другой установки tomcat, так что я указывал, даже если я использовал startup script в новой установочной папке. Поэтому просто удаление CATALINA_HOME решило проблему для меня.
Изменение порта с 8080 по 8088 в server.xml работало для меня. Проверьте приведенный ниже код
<Connector port="8088" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
В моем случае у меня было несколько разделов <Engine><Host>...</Host></Engine>
в моем context.xml
, и мне пришлось копировать и вставлять <Realm className="org.apache.catalina.realm.LockOutRealm">...</Realm>
в каждый раздел <Engine>...</Engine>
, потому что у меня было приложение менеджера, развернутое на каждом из этих хостов, которое были частью отдельного Engine
.
Ответ от @swapnil chaudhari о ограничении IP-адреса в приложении META-INF/context.xml
также полезен, однако я счел более полезным переопределить Context
на моем сервере server.xml
.
В конце концов, у меня есть что-то вроде этого для каждого из моих 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
относится к appBase
. В /opt/tomcat/webapps/MyUniqueHost
у меня есть символическая ссылка на приложение-менеджер, установленное моим диспетчером системных пакетов (Debian-based), который разместил его на /usr/share/tomcat8-admin/manager
. Эти символические ссылки позволяют мне использовать приложение-менеджер во всех моих Hosts
без копирования приложения-менеджера.
Просто, чтобы добавить информацию об ответе @David:
Если вы похожи на меня и SFTP на хост с любым пользователем из группы, отличной от tomcat (например, root), и отредактируйте tomcat_users.xml
с помощью какого-либо универсального редактора, такого как gedit или VS Code, группа файла будет изменена на пользователя Вы использовали (возможно, потому что был создан новый файл). Как ниже:
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
Возможно, моя первоначальная настройка tomcat была немного случайной... Но при вышеописанном поведении tomcat потеряет доступ к отредактированному файлу. Результатом будет 401 Несанкционированный.
Есть несколько вариантов решения проблемы. Я не уверен, что любой из них - лучшая практика.
Нижеследующее должно работать для "ванильной" установки (или архива zip/tar) - замените ваш tomcat-users.xml на (похожий) на это:
<?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="abc" password="xyz" roles="manager-gui, manager-script, manager-jmx, manager-status, admin-gui, admin-script"/>
</tomcat-users>
Я столкнулся с подобной проблемой и все еще не смог войти в систему с помощью Google Chrome (версия 73.0.3683.103), как на дату 05/05/2019 10:30 CST, несмотря на многократную переустановку/настройку Google Chrome.
Я бы посоветовал попробовать использовать другой браузер, такой как Firefox/IE и т.д., Если вы столкнулись с этой проблемой, даже после того, как много поиграли с xmls.
Я попытался добавить имя пользователя как tomcat в tomcat-users.xml, который уже был роли, и он не работал. Затем я дал имя пользователя в качестве администратора, и он отлично работал..:)
Завершение работы tomcat
вставьте ниже комментариев полный контент в tomcat-users.xml и сохраните
start tomcat
Теперь Build должен работать, я сделал для ОС Windows с Jenkins и git с помощью tomcat7
<?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 roles="manager-gui, manager-script, manager-jmx, manager-status, admin-gui, admin-script" password="admin" username="admin"/> </tomcat-users>
Я использовал специальный сложный пароль с большим количеством нечетных символов. Просто верните это обратно к обычному паролю и отлично работайте.