Spring Security — хеширование (bcrypt example)

Использование хешированных паролей в Spring Security 4.

Используемые технологии
  • Spring 4.2.2.RELEASE
  • Spring Security 4.0.2.RELEASE
  • MySQL 5.6.25
  • JSP 1.2.1
  • IntelliJ IDEA 14
  • Maven 3.2.5

1. Описание задачи

Хранение паролей в открытом виде плохая практика. Рассмотрим как сохранять пароли с использованием bcrypt — адаптивной криптографической хеш-функции. В Spring Security поддерживаются многие другие способы хеширования, а настройки перехода между разными вариантами осуществляется в паре строк.

2. Шифрование пароля

Для хеширования пароля воспользовался первой ссылкой google по запросу bcrypt online. Получим хеш функцию для пароля password:

bcrypt password

password = $2a$12$x0gRqdkZvaxAz8q9ORB9SOCWbGoSoTufquPbKIWO0iy8VLfDH.gWK (bctypt 12)

Теперь вставим его в базу данных для нашего пользователя.

 

user bcrypt password

3. Настройка spring-security-config.xml

Полный листинг:

Для работы с паролями в хешированном виде необходимо добавить тег <password-encoder/> и соответствующий бин.

Больше никаких настроек не требуется. При входе в приложение после ввода admin\password всё отработает корректно. Если же ввести user\user, то доступ будет закрыт, т.к. введенный пароль user должен соответствовать записи в базе данных $2a$12$H1UMbYdG1hxdwIsOGEUgBOzLdm0KMvkVqdc5YjuJcaSCLfX95fsU6, а на скриншоте видно, что он остался прежним.

Исходные коды

Spring Security bcrypt Example

Share Button
8
11248 Total Views 1 Views Today

Добавить комментарий