Подтвердить что ты не робот

403 Доступ запрещен в приложении Tomcat 8 Manager без запроса пользователя/пароля

Я установил tomcat 8 в соответствии с this, и у меня есть следующий файл tomcat-users.xml:

<?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/>

Когда я пытаюсь получить доступ к App Manager, я получаю отклонение с 403 без каких-либо подсказок для имени пользователя и пароля.

Что я пропустил в конфиге?

Edit1: Добавлен полный файл xml.

4b9b3361

Ответ 1


Правильный ответ можно найти здесь


Похоже, эта проблема может быть воспроизведена во время упомянутого учебника по машинам Unix. Также заметил, что автор использует TC 8.0.33
У Win (и OSX) нет такой проблемы, по крайней мере, на моем 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

После tomcat-users.xml изменяется путем добавления роли и пользователя Tomcat Web Application Manager можно получить доступ к Tomcat/8.5.4.

Ответ 2

Это может быть работой.

Найдите файл CATALINA_HOME/webapps/manager/META-INF/context.xml и добавьте маркеры комментариев вокруг клапана.

<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>

Вы можете найти более подробную информацию на этой странице.

Ответ 3

Решение, которое сработало для меня, - это редактировать context.xml файлы как в $CATALINA_HOME/webapps/manager/META-INF, так и в $CATALINA_HOME/webapps/host-manager/META-INF, где мой ip 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>

Я установил Tomcat 8.5 на Ubuntu и отредактировал $CATALINA_HOME/conf/tomcat-users.xml:

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

Тем не менее, я все еще не мог получить доступ к Tomcat Web Application Manager (localhost:8080/manager/html) и Tomcat Virtual Host Manager (localhost:8080/host-manager/html), пока не отредактировал файлы context.xml.

Ответ 4

Полезная ссылка здесь: Доступ к приложению Tomcat Manager с другого хоста

Из Tomcat версии 8 onward, менеджер /html url не будет доступен никому, кроме localhost.

Чтобы получить доступ к URL-адресу/manager/html, вам нужно сделать ниже изменения в context.xml приложения-менеджера. 1. Перейдите в папку /apache -tomcat-8.5.23/webapps/manager/META-INF, а затем отредактируйте context.xml

<Context antiResourceLocking="false" privileged="true" >
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="^.*$" />
 ......
</Context>
  1. Перезагрузите сервер.

Ответ 5

Мне нужно изменить следующие файлы

$CATALINA_BASE/conf/Catalina/localhost/manager.xml и добавьте следующую строку

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

Это позволит получить доступ к tomcat с любого компьютера, если вы хотите предоставить доступ к определенному IP-адресу, а затем используйте значение ниже, а не allow="^.*$"

    <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="192\.168\.11\.234" />

Ответ 6

Если не работает выше, убедитесь, что у tomcat есть доступ к папке менеджера под webapps (chown...). Сообщение - это то же самое сообщение, и мне понадобилось 2 часа, чтобы выяснить проблему.: -)

только для кого-то, кто пришел сюда по той же проблеме, что и я.

Ответ 7

Ответ на затухание сработал у меня. Я перешел с 8.0.30 до 8.5.5, и разница заключалась в том, что клапан в < 8.0.30 > /manager/META-INF/context.xml уже был прокомментирован из файла tar, но был без комментирования в 8.5.5 tar.

Мне не удалось прочитать это важное сообщение в ответе 403:

По умолчанию диспетчер доступен только из браузера, работающего на той же машины, что и Tomcat. Если вы хотите изменить это ограничение, вам нужно будет отредактировать файл manager.xml Manager.

И не удалось прочитать это:

Так как r1734267 RemoteAddrValve.is настроен по умолчанию в Менеджере и веб-приложения HostManager. Эта функция присутствует в 9.0.0.M4 и 8.5.0 и далее.

https://bz.apache.org/bugzilla/show_bug.cgi?id=59672

Ответ 8

Я безрассудно раскомментировал конфигурацию по умолчанию, в которой есть пароли типа ". Tomcat не может проанализировать этот файл (becayse of" <"), и тогда любая другая конфигурация, которую вы добавите, не будет работать -

Ответ 9

В моем случае это были ограничения безопасности, определенные в web.xml. Убедитесь, что они имеют те же роли, которые вы используете в tomcat-users.xml.

Например, это один из готовых тегов, который будет работать со стандартным tomcat-users.xml.

 <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>

В моем случае администратор использовал другое имя роли, что помешало мне получить доступ к менеджеру.

Ответ 10

скопируйте приведенный ниже контент в файл 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>

Я тестировал, он просто работает!

введите описание изображения здесь

Ответ 11

Я рассказал об этом же учебнике, но через несколько месяцев я странно получил сообщение об ошибке "403 Access Denied" при попытке использовать приложение "Диспетчер". В этом случае я использовал ipaddress: 8080 в адресной строке, а приложение Tomcat Manager не запрашивало пользователя/пароль. В случае localhost: 8080 ошибка была "401", отображается диалоговое окно с запросом имени пользователя и пароля, но пользователь не распознается.

Я попробовал все предыдущие предложения/решения без везения. Единственный способ, которым я нашел, - повторить снова весь учебник, перезаписывающий также файлы.. Когда закончите, я снова нашел старый развернутый проект в каталоге webapps. Теперь приложение Apache Tomcat/8.5.16 Manager работает снова. Я не знаю, что случилось, я тоже не понял, потому что я новичок в Tomcat.

Ответ 12

Мне пришлось добавить роли менеджер-gui и manager- script для работы в версии 9.

После получения доступа к MangerApp при попытке загрузить файл .war, я получил исключение

org.apache.tomcat.util.http.fileupload.FileUploadBase$IOFileUploadException

который я смог решить, используя ответ этого сообщения

Чтобы получить доступ к Host Manager, отметьте это сообщение

Ответ 13

Хорошо, что это работает, просто нужно понять смысл безопасности ролей в Tomcat!

Ответ 14

Правильный ответ, как указал @JaKu. Tomcat ограничивает доступ к localhost, чтобы сделать его безопасным. Это так и должно быть. Переадресация портов на tomcat - это правильная вещь, желательно под защитой SSH.

Ответ 15

  1. Перейти и проверить, создан ли пользователь или нет, если нет, создайте его, открыв файл в /apache-tomcat-9.0.20/tomcat-users.xml, добавив в него строку

    <user username="tomcat" password="tomcat" roles="admin-gui,manager-gui,manager-script"/>

  2. Перейти к /apache-tomcat-9.0.20/webapps/manager/META-INF/открыть context.xml прокомментировать все в примере тега context:

<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>

Ответ 16

У меня была такая же проблема при установке tomcat в докере. Я решил, добавив "^. * $" Вместо "127.\d +.\D +.\D + |:: 1 | 0: 0: 0: 0: 0: 0: 0: 1 | 123.123.123.123"

Перезапустите tomcat.