spring-boot-starter-security
- 스프링 부트에서 제공하는 스프링 시큐리티에 필요한 의존성을 담아두고 있는 스타터
Spring Security란
- 스프링 기반의 애플리케이션 보안을 담당하는 스프링 하위 프레임워크이다.
- 서블릿 필터로 구성되어 필터체인의 위임모델을 사용한다.
- 보안과 관련해서 체계적으로 많은 옵션을 제공해주기 때문에 개발자 입장에서는 보안관련 로직을 작성하지 않아도 된다.
보안 용어
- Principal : 접근 주체로 보호된 리소스에 접근하는 대상이다.
- Authentication(인증) : 보호된 리소스에 접근한 대상에 대해 해당 유저가 누구인지, 애플리케이션의 작업을 수행해도 되는 유저인지 확인하는 과정이다 예를 들어 로그인 기능이 있다.
- Authorize(인가) : 해당 리소스에 대해 접근 가능한 권한을 가지고 있는지 확인하는 과정이다. 즉 인증 이후에 하는 작업이다.
- 권한 : 어떠한 리소스에 대한 접근을 제한하는 것으로 모든 리소스는 접근 제어 권한이 걸려있다. 인가 과정에서 리소스에 대한 제한된 최소한의 권한을 가졌는지 확인한다.
- Credential(비밀번호) : 접근하는 대상의 비밀번호
Spring Security Filter
- UsernamePasswordAuthenticationFilter
- form 로그인 -> Authentication의 구현체인 UsernamePasswordAuthenticationToken 사용
- BasicAuthenticationFilter
- 비동기 로그인
- 헤더에 Basic 토큰값을 넣거나 encoding한 값을 넣어 로그인 처리
- BearerTokenAuthenticationFilter
- OAuth2LoginAuthenticationFilter