Как использовать защиту htpasswd в Tomcat? - PullRequest
5 голосов
/ 27 февраля 2009

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

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

htpasswd /path/to/users.htpasswd peter

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

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

Ответы [ 3 ]

3 голосов
/ 08 февраля 2010

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

  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>
    
3 голосов
/ 10 апреля 2015

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

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

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

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

2 голосов
/ 02 апреля 2009

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

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

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

...