Spring Security 관련 Documentation이다
build.gradle
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-security'
testImplementation 'org.springframework.security:spring-security-test'
gradle에 의존성 추가
SecurityConfig.java
Configuration 패키지안에 있는 SecurityConfig 클래스에 싱글톤으로
BCryptPasswordEncoder 빈을 생성해준다.
@Configuration // 싱글톤 보장
public class SecurityConfig {
// 암호화 Bean
@Bean
public BCryptPasswordEncoder encodePassword() {
return new BCryptPasswordEncoder();
}
}
이후 사용자의 password를 암호화 해주려면 BCryptPasswordEncoder를 불러와 password를
encode해주기만 하면 된다.
// UserService.java
private final BCryptPasswordEncoder bCryptPasswordEncoder;
UserEntity savedUser = userRepository.save(UserEntity.of(username, bCryptPasswordEncoder.encode(password)));
AuthenticationConfig.java
@EnableWebSecurity 어노테이션을 추가해주고,
WebSecurityConfigurerAdapter를 상속 받은 다음, configure 메소드를 오버라이딩해준다.
!!! Spring 3.0 이후 버전부터는 WebSecurityConfigurerAdapter가 deprecated되어 사용할 수 없다. 자세한 내용은 Spring Security 공식 문서 추후 참고 후 내용 추가 예정.
csrf
csrf() 방식의 공격에 대응하려면 Security 관련 Config 클래스에서 csrf관련 대응을 해주어야한다.
보통 세션 방식의 프로젝트라면 적용해야한다 (Stateful 상태)
그렇지 않은 프로젝트(Stateless)라면 csrf().disable()로 비활성화해주어도 된다.
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable()