Spring Security BCrypt всегда ищет регулярное выражение «$ 2a» - PullRequest
1 голос
/ 18 октября 2019

Я реализую пружинную защиту с пружинной загрузкой. И я сгенерировал пароль онлайн с помощью генератора BCrypt. Но когда я пытаюсь войти в систему, я получаю сообщение об ошибке:

2019-10-18 11: 10: 56.983 WARN 53908 --- [io-9090-exec-10] osscbcrypt.BCryptPasswordEncoder: Encodedпароль не похож на BCrypt.

После некоторых исследований я обнаружил, что в Spring Security BCrypt есть ошибка, которая ищет только регулярное выражение "$ 2a". Может кто-нибудь объяснить мне, чтобы решить эти проблемы?

1 Ответ

2 голосов
/ 18 октября 2019

по умолчанию весенняя загрузка 2.1.x поддерживает spring-security-core-5.1.x , которые обычно генерируют bcrypt версии $ 2a

Эта версия не поддерживает BCryptPasswordEncoder с другимиверсии.

Если вы хотите использовать другие версии, вам нужно обновить spring-security-core версия

Добавить ниже в вашем pom.xml

 <dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-core</artifactId>
    <version>5.2.0.RELEASE</version>
 </dependency>

затем создайте ваш BCryptPasswordEncoder bean, как показано ниже

@Bean(name = "passwordEncoder")
    public BCryptPasswordEncoder getPasswordEncoder() {

        BCryptPasswordEncoder bCryptPasswordEncoder = new BCryptPasswordEncoder(BCryptVersion.$2B);
        return bCryptPasswordEncoder;

    }

вы можете передать желаемую версию в конструктор BCryptPasswordEncoder.

возможные значения

  • BCryptVersion. $ 2A
  • BCryptVersion. $ 2Y
  • BCryptVersion. $ 2B
...