Я использую Spring Security.Я хочу хранить значения соли для каждого пользователя в базе данных.Я использовал BCrypt для генерации и хеширования соли при вставке пользователя в базу данных.
SaltGenerator.java
public class SaltGenerator {
public static String generateSalt()
{
String salt=BCrypt.gensalt(12);
return salt;
}
public static String generateHash(String password,String salt)
{
String hashedPassword=BCrypt.hashpw(password, salt);
return hashedPassword;
}
}
RegistrationDAO.java
String salt=SaltGenerator.generateSalt();
String hashedPassword=SaltGenerator.generateHash(user.getPassword(), salt);
, а затемподготовленное заявление и т. д.
Вот моя база данных
User
-id
-username
-password
-salt
При доступе к определенному URL будет отображаться форма входа по умолчанию.
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests().antMatchers("/userHomePage").authenticated().and().formLogin()
.and().exceptionHandling().accessDeniedPage("/Access_Denied");
}
Вот моя Javaкод.
public class SecurityCheck extends WebSecurityConfigurerAdapter{
@Autowired
private DataSource dataSource;
private String usernameSearch="select username,password,account_status from user where username=?";
private String roleSearch="select username,usertype from user where username=?";
@Autowired
private RequestHandler requestHandler;
@Override
protected void configure(AuthenticationManagerBuilder authenticate)
throws Exception {
authenticate.jdbcAuthentication().dataSource(dataSource).usersByUsernameQuery(usernameSearch).
authoritiesByUsernameQuery(roleSearch);
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests().antMatchers("/userHomePage").authenticated().and().formLogin()
.and().exceptionHandling().accessDeniedPage("/Access_Denied");
}
}
Мой вопрос: какие изменения я должен внести для достижения результатов?Как мне сначала получить соль для этого конкретного пользователя и использовать в authenticationManagerBuilder?ИЛИ любой другой способ сделать это?