Spring Security가 인증된SecurityContextHolder 사람에 대한 세부 정보를 저장하는 곳입니다 .
내부에 있는 Spring Security는 어떻게 구성되어있는지 신경쓰지 않고 포함되어 있으면 현재 인증된 사용자로 사용됩니다.
SecurityContext context = SecurityContextHolder.getContext();
Authentication authentication = context.getAuthentication();
String username = authentication.getName();
Object principal = authentication.getPrincipal();
Collection<? extends GrantedAuthority> authorities = authentication.getAuthorities();
SpringSecurityContextHolder
에서 가져올 수 있으며 해당 객체는 인증 개체Authentication
이 포함되어 있습니다.
해당 객체는 스프링 시큐리티에서 두가지의 목적을 가지고 있습니다.
AuthenticationManager
를 통해 인증을 위한 자격증명해당 객체는 다음과 같은 구성요소를 가지고 있습니다.
UserDetails
의 인스턴스인 경우가 많습니다.GrantAuthority
인스턴스는 사용에게 부여되는 상위 수준 권한일반적으로 애플리케이션 전체 권한을 의미하며 특정 도메인에 국한되지 않습니다. Authentication.getAuthorities()
메서드에서 해당 인스턴스를 얻을 수 있으며 웹 권한 부여, 메서드 구너한 부여 및 도메인 객체 권한 부여를 위해 구성됩니다. 일반적으로 ROLE_ADMIN
, ROLE_USER
와 같은 역할을 맡고 있으며 UserDetailService
에 의해 호출됩니다.
SpringSecurity의 필터가 인증을 수행하는 방법을 정의하는 API 이며 반환된 인증은 호출한 컨트롤러에 의해 SecurityContextHolder
에 설정됩니다.
AuthenticationProvider
인스턴스 목록에 위임하며 인증의 성공, 실패와 같은 내용을 구성합니다. 구성할 수 없는 경우 ProviderNotFoundException
과 함께 인증이 실패되며 가장 일반적으로 사용되는 구현입니다.
여러 가지의 AuthenticationProvider
들이 ProviderManager
에 삽입될 수 있으며 각각 알맞은 유형의 인증을 수행합니다.
참조 : 스프링 시큐리티 공식 문서