Вопрос

Я уже создал файл базы данных пользователей с помощью команды Apache htpasswd.Этот файл теперь используется несколькими другими приложениями, такими как Apache и Subversion.

Пользователи в создаются следующим образом:

htpasswd /path/to/users.htpasswd peter

Этот пользовательский файл является глобальным, а не отдельным каталогом.

Как я могу заставить Tomcat 6 использовать этот же файл в качестве области безопасности?

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

Решение

Есть два варианта:

  1. Используйте Apache в качестве внешнего интерфейса для Tomcat (используя mod_jk или mod_proxy_ajp), и Apache выполнит аутентификацию.Вы можете найти подробную информацию о том, как это сделать здесь

  2. Если вы хотите, чтобы кот выполнил аутентификацию, вам не нужно использовать что-то еще, кроме файла htpasswd.Существует 4 способа сохранить учетные данные пользователей — с использованием базы данных, JNDI/LDAP, XML-файла или поставщика JAAS.Обо всех вариантах вы можете прочитать в разделе Практическое руководство по настройке области.

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

Наиболее похожим на htpasswd может быть ПамятьОбласть.У меня самого были проблемы с поиском простого примера его использования, поэтому я опубликую здесь простой пример кода:

  1. Настройте роль, имя пользователя и пароль в tomcat-users.xml.

  2. Ваш web.xml должен содержать что-то вроде:

       <security-constraint>
         <web-resource-collection>
          <web-resource-name> 
            My Protected WebSite 
          </web-resource-name>
          <url-pattern> /* </url-pattern>
          <http-method> GET </http-method>
          <http-method> POST </http-method>
        </web-resource-collection>
        <auth-constraint>
        <!-- the same like in your tomcat-users.conf file -->
          <role-name> test </role-name>
        </auth-constraint>
      </security-constraint>
       <login-config>
        <auth-method> BASIC </auth-method>
        <realm-name>  Basic Authentication </realm-name>
      </login-config>
      <security-role>
        <description> Test role </description>
        <role-name> test </role-name>
      </security-role>
    
  3. Добавьте это в свой файл server.xml:

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

Чтобы защитить доступ к вашему веб-приложению Tomcat, вы можете реализовать простое ограничение безопасности (например,в /var/lib/tomcat7/webapps/*/WEB-INF/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 раздел).

Если вы не меняли какие-либо файлы конфигурации, проверьте файл 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: инструкции.

Затем перезапустите Tomcat, и при доступе к вашему веб-приложению он должен запросить у вас правильные учетные данные.

Смотрите также:

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