Tomcat сервлет безопасности - PullRequest
       3

Tomcat сервлет безопасности

2 голосов
/ 08 февраля 2012

Я играю с tomcat security для сервлетов.В моем server.xml у меня есть

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

, а в моем tomcat-users.xml

<user username="zenon" password="qazxsw" roles="proby"/>
<user username="andrzej" password="1c29cf0ceb89afce131e27b76c18af1e9cf7f5e3" roles="admin-gui,manager-gui,proby,role1"/>

web.xml очень простого приложения

<security-constraint>
  <display-name>No Pasaran</display-name>
  <web-resource-collection>
    <web-resource-name>Tylko dla memberow</web-resource-name>
    <url-pattern>/*</url-pattern>
  </web-resource-collection>
  <auth-constraint>
    <role-name>proby</role-name>
    <role-name>role1</role-name>
  </auth-constraint>
</security-constraint>
<login-config>
  <auth-method>BASIC</auth-method>
  <realm-name>UserDatabase</realm-name>
</login-config>

, поэтомукогда auth-method - BASIC, я могу войти в систему с именем пользователя: andrzej и паролем: qazxsw (этот длинный пароль andrzej - SHA из qazxsw), поэтому кажется, что теперь, когда я отправляю пароль, он уже переваривает его перед сравнением.Я так думаю, потому что, когда я использую DIGEST в качестве метода авторизации, я не могу войти в систему, переваривает ли он пароль дважды перед его сравнением?Если да, то есть ли какой-то другой способ защиты таких вещей на уровне контейнера по протоколу https?

1 Ответ

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

Прежде всего HTTP DIGEST не использует SHA, к сожалению, он использует MD5. Вам потребуется заменить SHA на MD5 как в вашей области, определенной в server.xml, так и в командной строке, которую вы используете для создания паролей.

Затем, как указывает документация Tomcat , в случае переваривания паролей вашей области способы генерации паролей для механизмов аутентификации BASIC и DIGEST различны. Таким образом, вы не можете использовать один и тот же дайджест пароля для тестирования обоих методов: BASIC и DIGEST.

В случае BASIC вы генерируете дайджест пароля с помощью:

CATALINA_HOME/bin/digest.[bat|sh] -a {algorithm} {cleartext-password}

, а в случае дайджеста это:

CATALINA_HOME/bin/digest.[bat|sh] -a {algorithm} {username}:{realm}:{cleartext-password}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...