애플리케이션의 보안에서 중요한 두 가지 영역은 '인증'과 '인가'
웹에서 인증이란 해당리소스에 대해서 작업을 수행할 수 있는 주체인지 확인하는 것.
댓글을 달기 위해서는 로그인이라는 인증 절차를 거쳐야 한다.
security dependency 추가하기
스프링 시큐리티를 사용하기 위해서 pom.xmldp security와 관련된
의존성 추가
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
스프링 시큐리티를 추가하였다면 모든 요청은 인증을 필요로 한다.
서버를 시작하면 바로 로그인창으로 나오게 된다.
콘솔창에 스프링에서 제공하는 비밀번호를 제공한다.
아이디 : user
비밀번호 : 콘솔창에 나오는 비밀번호 입력
/logout 입력하면 로그아웃창도 스프링에서 제공한다.
이젠 회원가입기능을 만들건데
@Configuration //빈 등록(Ioc관리)
@EnableWebSecurity
public class SecurityConfig {
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception{
return http.build();
}
/*
* 비밀번호를 데이터베이스에 그대로 저장했을 경우, 데이터베이스가 해킹당하면 고객의 회원 정보가 그대로 노출 된다.
* 이를 해결하기 위해 BCryptPasswordEncoder의 해쉬 함수를 이용해 비밀번호를 암호화하여 저장
* BCryptPasswordEncoder를 빈으로 등록하여 사용
* */
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
}
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception{}
기존에는 WebSecurityConfigurerAdapter를 상속받아 설정을 오버라이딩 하는 방식이었는데 더이상 지원하지 않아
상속받아 오버라이딩하지 않고 모두 Bean으로 등록한다.