인증 요청 이벤트를 나타내며 애플리케이션에 접근을 요청한 엔티티의 세부 정보를 담는다. 이 인터페이스는 Principal 인터페이스를 확장한다.
Principal은 자바 시큐리티에 인터페이스로 이를 확장하여 다른 애플리케이션과 호환성을 고려했다.
인증 이벤트 도중 또는 후로 이 인터페이스를 구현한 구현체를 통해서 사용자 정보에 접근 할 수 있다.
인증논리를 담당하는 인터페이스며 이 인터페이스의 기본 구현은 사용자를 찾는 책임은 UserDetailsService에게 암호 관리는 PasswordEncoder를 이용하게 되어있다.
보안 컨텍스트를 의미하며 인증이 완료된 사용자정보(Authentication)을 관리하는 역할을 한다.
해당 컨텍스트는 또 SecurityContextHolder를 통해 관리한다.
학교의 학생을 비유해 설명하자면 SecurityContextHolder(학교) -> SecurityContext(학급) -> Authentication(학생)이라고 이해하고 넘어가겠다.
보안 컨테스트 보유 전략은 기본적으로 아래의 세가지가 있다.
@Bean
fun initializingBean(): InitializingBean {
return InitializingBean { SecurityContextHolder.setStrategyName(SecurityContextHolder.MODE_INHERITABLETHREADLOCAL) }
}