Spring Security3 Authentication과 SecurityContextHolder 인증이 된 Authentication 객체는 어떻게 되는가? → SecurityContextHolder 에 들어가서 Application 전반에 걸쳐 사용할 수 있게 된다. AuthenticationManager가 인증을 마친 뒤 Return 받은 Authentication 객체가 언제 SecurityContextHolder에 저장되는가? SecurityContextPersisteneceFilter.class SecurityContext를 Http session에 캐시하여 여러 요청에서 Authentication을 공유하는 필터 SecurityContextRepository를 교체하여 세션을 HTTP session이 아닌 다른 곳에 저장하는 것도 가능하다. SecurityContextPersistenec.. 2021. 6. 3. AuthenticationManager와 Authentication Spring Security에서 인증(Authentication)은 AuthenticationManager가 한다. 인자로 받은 Authentication이 유효한 인증인지 확인하고 Authentication객체를 리턴한다. 인증을 확인하는 과정에서 비활성 계정, 잘못된 비번, 잠긴 계정 등의 에러를 던질 수 있다. AuthenticationManager의 구현체는 ProviderManager다. [ProvideManager.class] ProviderManager의 Authentication 객체에는 Principal의 username과 password 만이 들어온다. 해당 요청에 대한 인증을 처리할 수 있는 Provider를 찾아 이를 처리한 뒤 인증정보가 담긴 Authentication 객체를 반환.. 2021. 6. 2. SecurityContextHolder와 Authentication SecurityContextHolder SecurityContext 제공, 기본적으로 ThreadLocal을 사용한다. ThreadLocal 이란? 한 쓰레드 내에서 Share 하는 저장소 → 즉, 메소드 파라미터를 사용하지 않아도 한 쓰레드 내에서 공유하기 때문에 데이터에 접근할 수 있다. SecurityContext Authentication 제공 Authentication Principal과 GrantAuthority 제공 Principal "누구"에 해당하는 정보 UserDetailsService에서 리턴한 객체 객체는 UserDetails 타입 GrantAuthority ROLE_USER, ROLE_ADMIN 등 Principal이 가지고 있는 권한을 나타낸다. 인증 이후, 인가 및 권한 확인할.. 2021. 6. 2. 이전 1 다음