Spring Security는 Spring 기반의 애플리케이션의 보안(인증과 권한, 인가 등)을 담당하는 스프링 하위 프레임워크이다. Spring Security는 '인증'과 '권한'에 대한 부분을 Filter 흐름에 따라 처리하고 있다.
Spring Security는 보안과 관련해서 체계적으로 많은 옵션을 제공해주기 때문에 개발자 입장에서는 일일이 보안관련 로직을 작성하지 않아도 된다는 장점이 있다.
인증 성공 후에 인가를 거친다.
Spring Security에서는 이러한 인증과 인가를 위해 Principal을 아이디로, Credential을 비밀번호로 사용하는 Credential 기반의 인증 방식을 사용한다.
Principal(접근 주체): 보호받는 Resource에 접근하는 대상
Credential(비밀 번호): Resource에 접근하는 대상의 비밀번호
프로젝트에 적용했던 주요 모듈을 하나씩 이해해보자.
SpringContextHolder
SecurityContext(인증후에 로그인 정보 가져오는 곳)
Authentication
UsernamePasswordAuthenticationToken
AuthenticationProvider
AuthenticationManager
UserDetails
UserDetailsService(로그인 확인을 하는 클래스)
UserDetails 객체를 반환하는 단 하나의 메서드를 가지고 있는데 일반적으로 UserRepository에서 주입하여 DB와 연결하여 처리한다.
public interface UserDetailsService {
UserDetails loadUserByUsername(String var1) throws UsernameNotFoundException
}
``
PasswordEncoding
GrantedAuthority
// Spring Security 추가
implementation 'org.springframework.boot:spring-boot-starter-security'
implementation 'org.springframework.boot:spring-boot-starter-web'
spring.security.user.name=user
spring.security.user.password=1234
https://mangkyu.tistory.com/76
https://s262701-id.tistory.com/135
https://frogand.tistory.com/188
https://dev-setung.tistory.com/26