Как исправить доступ к запрошенному ресурсу, который запрещен в Tomcat?

StackOverflow https://stackoverflow.com/questions/2513415

Вопрос

Я хочу включить аутентификацию на основе форм, используя базу данных в качестве области, но я всегда получаю это сообщение всякий раз, когда пытаюсь пройти аутентификацию в качестве менеджера 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 снова запрашивает имя пользователя и пароль вместо того, чтобы показывать это сообщение.

Это было полезно?

Решение

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

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

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

Другие советы

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

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

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

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

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

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

Читать далее: Приложение Manager: инструкции

Если вы пытаетесь реализовать собственное ограничение безопасности (в 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 элемент, который определяет метод аутентификации, который мы используем, то есть BASICsecurity-constraint элемент содержит 3 элемента: web-resource-collection, auth-constraint, и user-data-constraint.Коллекция веб-ресурсов определяет части нашего приложения, требующие аутентификации.А /* указывает, что все приложение требует аутентификации.Ограничение аутентификации определяет роль, которую должен иметь пользователь для доступа к защищенным ресурсам.Транспортная гарантия ограничения пользовательских данных может быть 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 (ИНФОРМАЦИЯ, СЕРЬЕЗНАЯ, ПРЕДУПРЕЖДЕНИЕ, ИНФОРМАЦИЯ, КОНФИГ, ОТЛИЧНАЯ, ТОЧНАЯ, ЛУЧШАЯ или ВСЕ), перезапустите Tomat и проверьте журналы,
  • если в журналах ничего нет, проверьте, правильные ли вы проверяете журналы (sudo lsof | grep -E "java.*(out|txt|log)$", tail -f /var/log/tomcat7/*.log /var/log/tomcat7/*.txt /var/log/tomcat7/*.out),
  • когда используешь log4j систему регистрации, убедитесь, что вы инициализировал его правильно путем размещения библиотек и log4j.properties в нужную папку и настроим ее,
  • проверьте аутентификацию BASIC с помощью cURL:

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

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

      Обычно запрос должен вернуться HTTP/1.1 401 Неавторизованный и "WWW-аутентификация" в заголовке должно быть указано Базовый требуется аутентификация.

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

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

      Запрос должен быть отправлен с заголовком «Авторизация» и должен пройти аутентификацию.Если ваши учетные данные недействительны, вы должны получить: HTTP/1.1 401 Неавторизованный.Если пользователь аутентифицирован, но не имеет доступа для просмотра ресурса, вы должны получить: 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.

Вам необходимо определить другую роль пользователя с именем «tomcat» и сделать пользователя «синий» членом этой группы.

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top