인증(authentication)은 자신이 누구라고 주장하는 사람을 확인하는 절차이다.
사용자가 누구인지를 증명하는 과정이다 (Who are you?)
권한부여(authorization)는 가고 싶은 곳으로 가도록 혹은 원하는 정보를 얻도록 허용하는 과정이다. 사용자의 권리를 검증하는 과정이다 (What you can do)
로그인 페이지를 구현하기 위해서는 Spring Security의존성을 다운받아야한다.
일반적으로 사용자가 로그인을 하게되는 과정에 대해 살펴보면 아래와 같다
SecurityConfig에서 WebSecurityConfigurerAdapter을 상속 받아 UserDtailsService로 spring Security에서 유저의 정보를 가져온다.
@Configuration
@EnableWebSecurity //스프링 시큐리티의 웹 보안 기능의 초기화 및 설정들을 담당
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
private final UserDetailsService userDetailsService; //spring Security에서 유저의 정보를 가져오는 인터페이스
private final NaverOauthService naverOauthService;
public WebSecurityConfig(
@Autowired CustomUserDetailsService customUserDetailsService,
@Autowired NaverOauthService naverOauthService){
userDetailsService = customUserDetailsService;
this.naverOauthService = naverOauthService;
}
configure(HttpSecurity http)함수를 사용해 보안 설정을 정의할 수 있다.
나의 경우 MVC 패턴으로 view를 부트스트랩에 적용하면서 Css, js등의 내용도 같이 추가가 필요했다.
@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.anyRequest()
.permitAll()
;
}
}