2010-03-01 4 views
2

Я пытаюсь использовать хэширование для тестового примера в tomcat-users.xml. (Я планирую по реализации подкласса одного из классов Realm сделать реальную проверку подлинности с аудитом, регистрацией и т.д.) я выполнил командуHashing tomcat пароли

$TOMCAT_HOME/bin/digest.sh -a sha secret 

и получил результат «секрет: e5e9fa1ba31ecd1ae84f75caaa474f3a663f05f4». Я вставил это в

<user password="e5e9fa1ba31ecd1ae84f75caaa474f3a663f05f4" roles="test" username="tester"/> 

линия. Я добавил соответствующие магические слова в свой web.xml для использования аутентификации DIGEST для сервлета (role = test), но когда я пытаюсь войти в систему, я получаю ошибку 401.

Я «смотрел» транзакции с wirehark, и, похоже, браузер отправляет все правильные ответы.

Я делаю это правильно? Мне кажется, что дайджест-аутентификация отправит обратно MD5 («username: realm: password»), поэтому нет возможности для tomcat сравнивать значение, хранящееся в файле tomcat-users.xml со значением, отправленным браузером, так как это потребует либо «развязывания» значения пароля от tomcat-users.xml, либо «username: realm: password».

Следует ли вместо этого хранить хэш «имя пользователя: царство: пароль»?

ответ

7

Мальчик, это была ошибка DUE (ошибка пользователя)!

Я должен был более тщательно прочитать TOMCAT документы:

При использовании переваривается пароли с аутентификацией DIGEST, в открытом виде, используемого для генерации дайджеста отличается. В приведенных выше примерах {cleartext-password} необходимо заменить на {username}: {realm}: {cleartext-password}. Например, в среде разработки это может принимать форму testUser: localhost: 8080: testPassword.

Точно, последняя часть моего вопроса :-).