Как исправить доступ к запрошенному ресурсу, который был запрещен в Tomcat? - PullRequest
5 голосов
/ 25 марта 2010

Я хочу включить проверку подлинности на основе форм, используя базу данных в качестве области, но я всегда получаю это сообщение всякий раз, когда пытаюсь пройти проверку подлинности в качестве менеджера Tomcat в Tomcat 6. Я уже создал таблицу user_name и user_roles и сопоставил имя пользователя (синий ) для администратора и менеджера в качестве роли в таблице user_roles в MySQL, но я все еще не могу пройти проверку подлинности. Я уже воссоздал тег области в файле server.xml:

 <Realm className      = "org.apache.catalina.realm.JDBCRealm"
        debug          = "99" 
        driverName     = "com.mysql.jdbc.Driver"
        connectionURL  = "jdbc:mysql://localhost:3306/mail" 
        connectionName = "root" 
        userTable      = "users"
        userNameCol    = "user_name"
        userCredCol    = "user_pass"
        userRoleTable  = "user_roles" 
        roleNameCol    = "role_name" 
 /> 

Может кто-нибудь сказать мне, что я делаю неправильно, и как я могу включить аутентификацию на основе форм с помощью базы данных?

  1. Я объявил пользователя "синим" как администратором, так и менеджером, и когда я пытаюсь войти на страницу менеджера tomcat, он выдает мне сообщение:

    HTTP-статус 403 - доступ к запрошенному ресурсу запрещен

  2. Когда я ввожу неправильное имя пользователя или пароль, tomcat снова запрашивает имя пользователя и пароль вместо отображения этого сообщения.

Ответы [ 4 ]

3 голосов
/ 10 апреля 2015

HTTP-статус 403 (доступ к запрошенному ресурсу запрещен) может указывать на то, что вы ввели слишком много неверных учетных данных или у вас возникли проблемы с конфигурацией.

Одной из возможных проблем может быть то, что ваш браузер может кэшировать ваши учетные данные для аутентификации, поскольку при аутентификации BASIC ваш браузер запрашивает учетные данные только при первой аутентификации на вашем сайте. После успешной аутентификации он не будет запрашивать вас снова и заставлять ваш браузер запрашивать снова, иногда вам необходимо полностью закрыть браузер (или попробовать с другим веб-браузером).

Если вы не изменили какие-либо файлы конфигурации, проверьте файл conf/tomcat-users.xml в вашей установке (locate tomcat-users.xml). Этот файл должен содержать учетные данные, позволяющие использовать веб-приложение Tomcat.

Например, чтобы добавить роль manager-gui для пользователя с именем tomcat с паролем s3cret, добавьте следующее в файл конфигурации, указанный выше:

<role rolename="manager-gui"/>
<user username="tomcat" password="s3cret" roles="manager-gui"/>

Затем вы можете получить доступ к своему менеджеру веб-приложений из /manager/html (например, перезагрузка после изменений конфигурации).

Подробнее: Диспетчер приложений HOW-TO

Если вы пытаетесь реализовать собственное ограничение безопасности (в web.xml), попробуйте следующий пример (добавьте его до </web-app> окончание):

<!-- This security constraint protects your webapp interface. -->
<login-config>
  <!-- Define the Login Configuration -->
  <auth-method>BASIC</auth-method>
  <realm-name>Webapp</realm-name>
</login-config>
<security-constraint>
  <web-resource-collection>
    <web-resource-name>Admin</web-resource-name>
    <url-pattern>/*</url-pattern>
    <http-method>GET</http-method>
    <http-method>POST</http-method>
  </web-resource-collection>
  <auth-constraint>
    <role-name>*</role-name>
  </auth-constraint>
  <!-- Specifying a Secure Connection -->
  <user-data-constraint>
    <!-- transport-guarantee can be CONFIDENTIAL (forced SSL), INTEGRAL, or NONE -->
    <transport-guarantee>NONE</transport-guarantee>
  </user-data-constraint>
</security-constraint>
<!-- Authorization, see: tomcat-users.xml --> 
<security-role>
  <role-name>*</role-name>
</security-role>

Элемент login-config содержит элемент auth-method, который указывает используемый нами метод проверки подлинности, BASIC. Элемент security-constraint содержит 3 элемента: web-resource-collection, auth-constraint и user-data-constraint. Коллекция web-ресурсов определяет части нашего приложения, которые требуют аутентификации. /* указывает, что для всего приложения требуется аутентификация. Ограничение auth определяет роль, которую должен иметь пользователь для доступа к защищенным ресурсам. Транспортная гарантия ограничения пользовательских данных может быть NONE, CONFIDENTIAL или INTEGRAL. Мы установили его на NONE, что означает, что при попытке попасть на защищенный ресурс перенаправление на SSL не требуется.

Также убедитесь, что у вас есть строка:

<Realm className="org.apache.catalina.realm.MemoryRealm" />

внутри вашей conf/server.xml (Engine секции).

Если проблема не устранена, попробуйте:

  • проверьте, правильно ли вы редактируете XML-файл,
  • проверить ваши файлы XML, например, catalina.sh configtest или xmlstarlet val /etc/tomcat?/*.xml /var/lib/tomcat7/webapps/*/WEB-INF/*.xml,
  • ваши <url-pattern> совпадают в вашем <security-constraint> или установлены на /*,
  • проверьте ваши журналы Tomcat (например, /var/log/tomcat7),
  • увеличение уровня ведения журнала (INFO -> FINE / FINEST) в logging.properties или log4j.properties (INFO, SEVERE, WARNING, INFO, CONFIG, FINE, FINER, FINEST, FINEST, FINEST или ВСЕ), перезапустите Tomat и проверьте логи,
  • если в журналах ничего нет, проверьте, проверяете ли вы правильные журналы (sudo lsof | grep -E "java.*(out|txt|log)$", tail -f /var/log/tomcat7/*.log /var/log/tomcat7/*.txt /var/log/tomcat7/*.out),
  • при использовании системы регистрации log4j, убедитесь, что правильно инициализировали ее , поместив libs и log4j.properties в нужную папку и настроив ее,
  • проверка подлинности BASIC с помощью cURL:

    • без учетных данных:

      $ curl -vv http://example.com:8983/solr/
      

      Обычно запрос должен возвращать HTTP / 1.1 401 Unauthorized , а заголовок " WWW-Authenticate " должен указывать Basic Требуется аутентификация.

    • с учетными данными:

      $ curl -vv -u tomcat:tomcat http://example.com:8983/solr/
      

      Запрос должен быть отправлен с заголовком «Авторизация», и он должен аутентифицироваться. Если ваши учетные данные недействительны, вы должны получить: HTTP / 1.1 401 Unauthorized . Если пользователь аутентифицирован, но не имеет доступа к просмотру ресурса, вы должны получить: HTTP / 1.1 403 Запрещено .

  • возможно, механизм блокировки пользователя был активирован для слишком много неудачных попыток аутентификации ( LockOutRealm ),

  • остановить и запустить Tomcat вручную (так же, как в: ps wuax | grep ^tomcat), например ::

    # ps wuax | grep ^tomcat
    tomcat7    884  /usr/lib/jvm/java-7-openjdk-amd64/bin/java -Djava.util.logging.config.file=/var/lib/tomcat7/conf/logging.properties ... org.apache.catalina.startup.Bootstrap start
    $ /etc/init.d/tomcat7 stop
    $ sudo sudo -u tomcat7 /usr/lib/jvm/java-7-openjdk-amd64/bin/java ...  -Dorg.apache.catalina.level=FINEST org.apache.catalina.startup.Bootstrap start
    

    Либо начните использовать скрипт catalina.sh, например:

    $ . /etc/default/tomcat7
    $ export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64 CATALINA_HOME=/usr/share/tomcat7 CATALINA_BASE=/var/lib/tomcat7 CATALINA_PID=/var/run/tomcat7.pid CATALINA_TMPDIR=/tmp LOGGING_CONFIG="-Dorg.apache.catalina.level=FINEST"
    $ /usr/share/tomcat7/bin/catalina.sh run
    

    Или в режиме отладки :

    $ JPDA_SUSPEND=y catalina.sh jpda start
    

    и проверьте ваш catalina.out журнал.

  • в крайнем случае отлаживать процесс: sudo strace -fp PID.

2 голосов
/ 25 марта 2010

Я не пробовал это сам. Можете ли вы попробовать изменить метод auth в TOMCAT_HOME_DIR\webapps\manager\WEB-INF\web.xml, чтобы указать для метода auth значение FORM. Имя царства не имеет значения.

<login-config>   <auth-method>FORM</auth-method>   <realm-name>Tomcat Manager Application</realm-name> </login-config>

Также просто подтвердите - вам нужно будет оставить только одну Область в файле server.xml, закомментируйте одну по умолчанию.

0 голосов
/ 24 июня 2014

Я получил ту же ошибку "HTTP Status 403 - Доступ к запрошенному ресурсу был запрещен", вместо всплывающего окна, когда я использовал BASIC-аутентификацию. Я использовал свою роль настройки (мое имя), но это т работал. Итак, я назначил роль (manager-gui) и присвоил ей имя пользователя и пароль. После установки я получил требуемый результат. Используйте manager-gui в качестве роли и попробуйте снова.

0 голосов
/ 24 мая 2011

Вам нужно определить другую роль пользователя с именем 'tomcat' и сделать пользователя 'blue' членом этой группы.

Вы можете изменить имя группы ролей, необходимое для этого ограничения, в файле web.xml:

<auth-constraint>
    <role-name>tomcat</role-name>
</auth-constraint>
...