Как добавить bcrypt в аутентификацию безопасности Spring?

У меня есть весенняя безопасность, настроенная с помощью JPA и JWT, и она отлично работает для простых текстовых паролей,

Я пытался добавить Bcrypt, но не смог заставить его работать.

  • Я попытался получить соль из сохраненного пароля и закодировать пароль в приходящем запросе, сравнив их с аутентификацией.

Но я не могу получить соль.

вот код

//SecurityConfig
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
    auth.userDetailsService(userDetailsService).passwordEncoder(new BCryptPasswordEncoder());
}

//Controller
    @RequestMapping(value="/authenticate", method=RequestMethod.POST)
    public ResponseEntity<?> createAuthenticationToken(@RequestBody AuthenticationRequest authenticationRequest) throws Exception {
        try {
            authenticationManager.authenticate(
                new UsernamePasswordAuthenticationToken(authenticationRequest.getUsername(), authenticationRequest.getPassword())
            );
        } catch (BadCredentialsException e) {
            throw new Exception("Incorrect username or password", e);
        }

        final UserDetails userDetails = userDetailsService.loadUserByUsername(authenticationRequest.getUsername());

        final String jwt = jwtTokenUtil.generateToken(userDetails);

        return ResponseEntity.ok(new AuthenticationResponse(jwt));
    }

Я сохраняю пароль как

//UserService
public User saveUser(UserDto userDto) {
        User user = new User();
        user.setUsername(userDto.getUsername());
        user.setPassword(passwordEncoder.encode(userDto.getPassword()));
        user.setRoles(userDto.getRoles());
        user.setActive(true);
        userRepository.save(user);
        return user;
    }

person Omar Abdelhady    schedule 16.04.2020    source источник


Ответы (1)


Вам также необходимо зарегистрировать кодировщики паролей BCrypt как Spring Bean:

@Bean
public PasswordEncoder passwordEncoder() {
    return new BCryptPasswordEncoder();
}
person Community    schedule 16.04.2020