Зашифровать пароль в форме добавления пользователя - Безопасность Spring

Я использовал Spring Security, чтобы избежать доступа пользователей к моему приложению. У меня роли и пароли для таких пользователей кодируются с помощью SHA. Все работает хорошо, и я активно использую форму входа, но мне нужна форма для создания пользователей. Моя проблема в том, что то, что я пишу в поле пароля, интерпретируется как пароль в кодировке SHA, поэтому, когда я пытаюсь войти в систему с новым пользователем, я не могу. Как я могу это решить? Есть ли способ заставить Spring зашифровать пароль, который я пишу в поле пароля?


person David Moreno García    schedule 08.09.2013    source источник


Ответы (1)


Во время аутентификации пользователя

Менеджер аутентификации Spring Security должен быть настроен таким образом, чтобы он заранее кодировал пароли в виде простого текста, полученные из формы входа, с использованием SHA.

Это объясняется в эта глава документации Spring Security, в параграфе «Добавление кодировщика паролей». В основном это добавление этой строки конфигурации:

<authentication-provider>
    <password-encoder hash="sha"/>
    ...
</authentication-provider>

Во время создания пользователя

Прежде чем сохранить нового пользователя, вы должны «самостоятельно» закодировать пароль, безопасность Spring с этим не справляется.

В вашем случае вы можете использовать метод ShaPasswordEncoder.encodePassword(..).

Эта тема оценивалась в разделе Добавление новых пользователей в Spring Security.

Изменить добавлены подробности после первого комментария автора вопроса

person gregfqt    schedule 08.09.2013
comment
Нет, пароль хранится в виде простого текста, и это то, что мне нужно изменить (я использую Spring Data JPA). Spring Security настроен таким образом, поэтому, например, если пользователь был создан с паролем 75BA66whatever792BD, когда я пишу 123456, Spring предоставит мне доступ. - person David Moreno García; 08.09.2013