Spring Security

Spring Security 란?

JUN0126 2021. 5. 9. 23:31

Spring Security 란?

 - Spring에서 제공해주는 Spring 기반 애플리케이션의 보안(인증과 권한, 인가 등)을 담당하는 스프링 하위 프레임워크

Spring Security 처리 아키텍쳐

인증(Authentication)

 - 현재 사용자가 본인인지 확인, 로그인 시 현재 등록된 사용자 인지 여부 확인

인가(Authorization)

 - 인증을 통해 인증된 사용자가 요청한 자원(Resource)에 접근 가능한지 결정하는 절차

 


• Principal(접근 주체) : 보호받는 자원에 접근하는 대상, UserDetailsService에서 리턴한 객체

Credential(비밀번호) : 자원에 접근하는 대상의 비밀번호

• GrantAuthority(권한) : 인증 이후, 인가 및 권한을 확인할 떄 이 정보를 참조한다.

  - Spring Security는 Credential 기반 인증방식을 사용

 

1. SecurityContextHolder

 - 보안 주체의 세부 정부를 포함하여 응용 프로그램의 현재 보안 컨텍스트에 대한 세부 정보가 ThreadLocal 에 저장됨

   EX) UserDetails user = (UserDetails) SecurityContextHolder.getContext().getAuthentication().getPrincipal();

 

2. AuthenticationManager 와 Authentication

 - Security에서 인증은 AuthenticationManager가 한다.

 - 인증을 확인하는 과정에서 비활성 계정, 잘못된 비밀번호, 잠긴 계정 등의 에러르 던질 수 있다.

 

3. AuthenticationManager가 인증을 마친 뒤 리턴받은 Authentication 객체는 UsernamePasswordAuthenticationFilter

   에서 인증된 Authentication 객체를 SecurityHolder에 넣어준다.