Я использовал Spring Security, чтобы избежать доступа пользователей к моему приложению. У меня роли и пароли для таких пользователей кодируются с помощью SHA. Все работает хорошо, и я активно использую форму входа, но мне нужна форма для создания пользователей. Моя проблема в том, что то, что я пишу в поле пароля, интерпретируется как пароль в кодировке SHA, поэтому, когда я пытаюсь войти в систему с новым пользователем, я не могу. Как я могу это решить? Есть ли способ заставить Spring зашифровать пароль, который я пишу в поле пароля?
Зашифровать пароль в форме добавления пользователя - Безопасность Spring
Ответы (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
Нет, пароль хранится в виде простого текста, и это то, что мне нужно изменить (я использую Spring Data JPA). Spring Security настроен таким образом, поэтому, например, если пользователь был создан с паролем 75BA66whatever792BD, когда я пишу 123456, Spring предоставит мне доступ.
- person David Moreno García; 08.09.2013