Spring Security는 인증에 필요한 사용자 정보를 저장할 때 비밀번호는 PasswordEncoder 객체를 이용해 암호화된 Password로 저장돼야 한다. 현재 프로젝트에서는 PasswordEncoder를 구현한 BcryptPasswordEncoder 객체를 이용해 암호화를 할 것이다.
@Bean @Override public AuthenticationManager authenticationManagerBean()throws Exception { returnsuper.authenticationManagerBean(); }
@Override protectedvoidconfigure(HttpSecurity http)throws Exception { http.csrf().disable().authorizeRequests() .antMatchers("/api/user/signup").permitAll() .anyRequest().authenticated() .and() // 토큰을 활용하면 세션이 필요 없으므로 STATELESS로 설정하여 Session을 사용하지 않는다. .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS) .and() // form 기반의 로그인에 대해 비활성화 한다. .formLogin().disable(); }
@Bean public PasswordEncoder passwordEncoder() { returnnewBCryptPasswordEncoder(); } }
회원 가입 Service에 암호화 적용하기
PasswordEncoder 객체를 이용해 암호화된 Password를 갖는 Account 객체를 생성하도록 변경한다.