Spring Security는 Spring 기반의 어플리케이션의 보안(인증과 권한, 인가등)을 담당하는 스프링 하위 프레임 워크이다. Spring Security는 '인증'과 '권한'에 대한 부분을 Filter흐름에 따라 처리하고 있다. Filter는 Dispather Servlet 으로 가기 전에 적용되므로 가장 먼저URL 요청을 받지만, Interceptor는 Dispatcher와 Controller사이에 위치한다는 점에서 적용시기의 차이가 있다. Spring Security는 보안과 관련해서 체계적으로 많은 옵션을 제공해주기 때문에 개발자 입장에서는 일일이 보안관련 로직을 작성하지 않아도 된다는 장점이 있다.
출처 : https://mangkyu.tistory.com/76
Authentication
Authentication는 현재 접근하는 주체의 정보와 권한을 담는 인터페이스이다. Authentication 객체는 Security Context에 저장되며, SecurityContextHolder를 통해 SecurityContext에 접근하고, Security Context를 통해 Authentication에 접근할 수 있다고 한다.
UsernamePasswordAuthenticationToken
UsernamePasswordAuthenticationToken은 Authentication을 Implements한 AbtractAuthenticationToken의 하위클래스로, User의 ID가 Principal역할을 하고, Password가 Credential의 역할을 한다. UsernamePasswordAuthenticationToken의 첫번째 생성자는 인증전의 객체를 생성하고, 두번째 생성자는 인증이 완료된 객체를 생성한다.
UserDetailsService
UserDetailsService 인터페이스는 UserDetails객체를 반환하는 단 하나의 메소드를 가지고 있는데, 일반적으로 이를 구현한 클래스의 내부에 UserRepository를 주인받아 DB와 연결하여 처리한다.
testImplementation 'org.springframework.security:spring-security-test'
먼저 프로젝트에서 사용할 Dependency를 build.gradle에 추가해준다.
그 이외 내용은 내 깃허브링크로 올려본다.
https://github.com/colleenInKorea/myselectshop_w3.git