1
bcrypt 및 스프링 보안을 사용하여 & 소금 사용자 암호를 해시하고 싶습니다.스프링 보안이 적용된 사용자 지정 암호 소금
다음public class User {
private Integer id;
private String email;
private String hashedPassword;
private String salt; //I want to use this salt.
private Boolean enabled;
//Getters & Setters
}
내가 자신의 소금으로 새 사용자를 만드는 방법은 다음과 같습니다 :
@Transactional
public User create(String email, String password) {
User user = new User();
user.setSalt(BCrypt.gensalt(12)); //Generate salt
user.setEnabled(true);
user.setEmail(email);
user.setHashedPassword(BCrypt.hashpw(password, user.getSalt()));
return dao.persist(user);
}
을 그리고 여기에 봄의 구성입니다 :
여기 내 사용자 모델 (I 쓸모없는 코드를 제거)입니다이 구성에서 나는 PasswordEncoder
이를 사용해야 함을 나타냅니다.;
문제 : 암호 모듈되는 PasswordEncoder와 함께 사용하면
소금 값이 null이어야합니다 : 나는 오류 500 다음 얻는다.
BCoverPasswordEncoder가 자체 SaltSource를 사용하기 때문에 salt가 null이어야합니다.
- 내
SaltSource
를 사용하는 방법이 있나요? 또는 - 신뢰할 수있는 알고리즘 중 어느 것이 내
SaltSource
을 허용합니까?
감사합니다. 첫 번째 질문에
소금원을 사용하고 싶다면 특별한 이유가 있습니까? – holmis83
@ holmis83'BCryptPasswordEncoder'는 모든 사용자에게 어떻게 다른 소금을 사용하고 싶은지 모르겠지만 여러 서버에서 같은 방식으로 소금물을 붙이고 확인하고 싶습니다. –