Шифрование паролей в Spring Security

Пока было время добавил шифрование паролей в один проект. Программист, который начинал его делать, почему-то не озаботился этим с самого начала.В результате все пароли хранились в открытом виде, что недопустимо. Пароли нужно всегда шифровать специальными алгоритмами вроде bcrypt, не стоит пользоваться алгоритмами, которые изначально для этого не предназначались, вроде MD5 или SHA.

Сначала нам нужно объявить бин bcryptEncoder  класса org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder в spring-security.xml  нашего проекта:

Затем в секции authentication-provider  добавить строчку <password-encoder ref="bcryptEncoder"/> вот так:

Если вы используете свою реализацию authentication-provider, то вам нужно будет вручную сравнивать пароль с помощью метода bcryptEncoder.matches(rawPassword, encryptedPassword) , что может выглядеть примерно так:

В тех местах кода, где вы задаёте новый пароль пользователю, нужно зашифровать новый пароль перед сохранением в базу данных с помощью метода bcryptEncoder.encode(newPassword).

Шифрование паролей в Spring Security: 4 комментария

  1. Неплохо, но к сожалению, это хеширование, а не шифрование.
    Шифрование подразумевает двустороннее преобразование (шифрование/дешифрование)

    1. по крайней мере со стандартным диалогом авторизации, дешафирование не нужно, spring сам всё сделает и проверит на равенство

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *