Как бы вы реализовали соленые пароли в Tomcat 5.5

Мое веб-приложение полагается на безопасность, управляемую контейнером, и мне интересно, можно ли вообще использовать соленые пароли. Насколько я могу сказать, достаточно легко хранить переваренные пароли в базе данных, просто настроив JDBC или DataSource Realm, но там нет способа добавить соль в этот дайджест.

Любые предложения?

Изменить: Кажется, мне просто нужно еще подумать, прежде чем задавать вопросы; -)

Это вопрос выбора, кто выполняет расчет дайджеста (клиент или сервер) и соответственно настраивает Tomcat.

Ответы

Ответ 1

Если вы создаете и храните дайджесты, вы можете одновременно создавать и хранить соли.

Ваша таблица auth будет содержать .... pwdDigest varchar (64), - или int256, если у вас есть один hashSalt int64, ....

Затем, в зависимости от используемого вами протокола auth, вы отправляете hashSalt клиенту, когда вы получаете имя пользователя для шифрования на стороне клиента или используете его для хеширования пароля, если вы его получите в явном виде.

Я не знаком с технологиями доступа к базе данных, о которых вы говорите, поэтому я прошу прощения, если я пропустил эту точку и упростил ответ.

Ответ 2

Tomcat 5.5 и 6.0 не поддерживают соленые пароли в JDBCRealms и DataSourceRealms. Это известная ошибка, и предлагаемый патч, похоже, работает нормально, но он еще не принят.

Если вы не хотите применять патч, вы можете хотя бы использовать его в качестве примера реализации:

Ошибка 45871 - Поддержка соленых и переваренных патчей в DataSourceRealm