Tomcat Digest с менеджером WebApp - PullRequest
3 голосов
/ 05 июня 2010

Я пытаюсь получить дайджест пароля для приложения tomcat manager.

У меня есть

<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
             resourceName="UserDatabase" digest="MD5"/>

в моем tomcat server.xml изменил web.xml веб-приложения менеджера для использования дайджеста и изменил имя области на TESTING:

<login-config>
    <auth-method>DIGEST</auth-method>
    <realm-name>TESTING</realm-name>
  </login-config>

Затем я использовал файл bat для генерации хеша md5:

C:\tomcat6\bin>digest.bat -a MD5 tomcat:TESTING:testor
tomcat:TESTING:testor:1926e50988667dbd5deda9df02b82f28

Затем у меня есть пользователь в tomcat-users.xml с этим переваренным хешем в качестве пароля:

<!-- testor -->
  <user username="tomcat" password="1926e50988667dbd5deda9df02b82f28" roles="manager"/>

Я также изменил страницу 401.jsp, чтобы использовать дайджест и ТЕСТИРОВАНИЕ в качестве имени области.

Я запускаю веб-приложение, захожу на http://localhost:8080/manager/html и мне предлагается стандартная форма. Набрав tomcat в качестве пользователя и testor в качестве пароля, я нажимаю клавишу ввода только для получения 401. Я, конечно, пробую снова и снова получаю 401.

В конце концов, я, вероятно, пойду с BASIC-аутентификацией по SSL, поскольку, насколько я знаю, ant не может выполнить дайджест.

Но есть ли в любом случае это сделать?

Ответы [ 5 ]

2 голосов
/ 12 апреля 2016

Я опробовал ответ KiaMorot с Tomcat 8.0.32, но он не сработал. Это сработало, когда я добавил опцию «-s 0» (соль - ноль) при генерации переваренного пароля:

sudo /opt/apache-tomcat-8.0.32/bin/digest.sh -s 0 -a MD5 'разработчик: база данных пользователей: мой открытый текстовый пароль'

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

Вы можете проверить, является ли отсутствие опции -s вашей проблемой, следующим образом. Если я выполняю команду digest.sh несколько раз без опции -s, я получаю разные результаты, хотя командная строка каждого повторения одинакова.

1 голос
/ 06 августа 2015

Я полагаю, что вам не хватает строк в server.xml, где вы определяете имя своего ресурса.

 <Resource
    auth="Container"
    description="User database that can be updated and saved"
    factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
    name="UserDatabase"  #<--------------NOTE
    pathname="conf/tomcat-users.xml"
    type="org.apache.catalina.UserDatabase"/>

Значение атрибута name из <Resource> определения должно совпадать со значением атрибута resourceName из вашего <Realm> определения, например,

<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
   resourceName="UserDatabase"  #<------------NOTE
   digest="MD5"/>

Это должно соответствовать конфигурации <realm-name> в web.xml, например,

<login-config>
    <auth-method>DIGEST</auth-method>
    <realm-name>UserDatabase</realm-name> #<------------NOTE
</login-config>

И не забудьте сгенерировать свой пароль следующим образом:

C: \ tomcat6 \ bin> digest.bat -a MD5 tomcat: база данных пользователей: testor

Если все это выполнено, ваши настройки должны работать без сбоев, как в моем случае.

Обратите внимание, что для tomcat7 и tomcat8 MD5 в качестве алгоритма дайджеста необходимо .

1 голос
/ 19 августа 2010

У меня работает следующее:

digest.sh -a MD5 tomcat:UserDatabase:testor
0 голосов
/ 15 июня 2017

1) Создать пароль: /bin>digest.bat -s 0 -a sha-256

Пример: /bin>digest.bat -s 0 -a sha-256 admin

Пароль для использования: 8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918

* Важное примечание: Вы должны использовать «-s 0» (соль 0), иначе оно не будет работать.

2) вставьте указанный выше пароль в файл tomcat-users.xml.

Пример:

<!-- for password “admin” -->
<user username="tomcat" password="8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918" roles="manager-gui,manager,admin"></user>

3) настройте server.xml для использования паролей SHA-256, основанных на хэше:

4) настройте ваш web.xml для использования паролей «DIGEST» и обновите RealmName, чтобы оно совпадало с приведенным выше (в разделе HTMLManager)

 <catalina_home>/webapps/manager\WEB-INF\web.xml

    <login-config>
        <auth-method>DIGEST</auth-method>
        <realm-name>UserDatabase</realm-name> 
    </login-config>

Full context:
  <servlet>
    <servlet-name>HTMLManager</servlet-name>
    <servlet-class>org.apache.catalina.manager.HTMLManagerServlet</servlet-class>
    <init-param>
      <param-name>debug</param-name>
      <param-value>2</param-value>
    </init-param>

… SNIPPED_FOR_BREVITY ...   

    <login-config>
    <auth-method>DIGEST</auth-method>
    <realm-name>UserDatabase</realm-name>
  </login-config>

    <multipart-config>
      <!-- 50MB max -->
      <max-file-size>52428800</max-file-size>
      <max-request-size>52428800</max-request-size>
      <file-size-threshold>0</file-size-threshold>
    </multipart-config>
  </servlet>
0 голосов
/ 24 сентября 2015

Все хорошо. но какой путь вы используете для обновления web.xml? Это должно быть /webapps/manager/WEB-INF/web.xml, здесь измените loginconfig.

И убедитесь, что используемая версия 8.0.26 не является стабильной версией для генерации пароля md5.

...