[Spring Security] 스프링 시큐리티란?

EB·2024년 2월 14일

👮‍♀️ Spring Security

Spring 기반의 애플리케이션의 보안(인증,권한,인가 등)을 담당하는 스프링 하위 프레임 워크이다.

Filter와 Interceptor의 차이

Filter와 Interceptor의 차이는 적용 시기에 차이가 있다.
FilterDispatcherServlet 전에 작업을 수행하고,
Interceptor는 DispatcherServlet과 Controller 사이에 있어, Controller 호출 전과 후에 수행한다.

순서

  1. 클라이언트 로그인 요청

  2. AuthenticationFilter에서 인증을 처리한다.

    아이디와 비밀번호를 추출해서 usernamePasswordAuthenticationToken발급한다.

  3. AuthenticationFilterAuthenticationManager에게 인증 객체 전달한다.

    AuthenticationManager는 인증을 담당하기 때문에 올바른 유저인지 확인

  4. 인증을 위해 AuthenticationProvider에게 인증 객체 전달

  5. 전달받은 인증 객체의 정보를 UserDetailService에 전달한다.

    AuthenticationProvider가 UserDetailService에게 인증 객체 전달.

  6. UserDetailService는 전달 받은 사용자 정보를 통해 DB에서 사용자를 조회하고 UserDetails 객체를 생성하고 반환한다.

  7. UserDeatils 객체를 AuthenticationProvider에게 전달한다.

  8. ProviderManager에 권한을 담은 검증된 인증 객체 전달한다.

    AuthenticationProvider는 UserDetails를 인증해서 성공하면 ProviderManager에게 인증 객체 전달한다.

  9. 검증된 인증 객체를 AuthenticationFilter에 전달한다.

  10. 검증된 인증 객체를 SecurityContextHolder의 SecurityContext에 저장한다.


👩‍💻 SecurityContextHolder 란?

SecurityContextHolder는 Authenitaction 객체를 저장하는 SecurityContext를 포함한다.

Authentication 객체

  • 사용자 식별 데이터를 의미하는 principal
  • 암호를 의미하는 credentail
  • 권한을 의미하는 authorities 를 포함한다.
profile
👩‍💻✨junior developer

0개의 댓글