ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Spring Security] 스프링시큐리티의 기본 개념과 구조
    Spring 2020. 12. 1. 16:32

    스프링시큐리티(Spring Security)란?

     

    스프링 시큐리티는 스프링 기반의 애플리케이션 보안(인증과 권한, 인가 등)을 담당하는 

    스프링 하위 프레임 워크이다.

    인증(Authenticate, 누구인지)인가(Authorize, 어떤것을 할 수 있는지)를 담당하는 프레임워크.

     

     

    기본용어

    -접근 주체 (Principal): 보호된 리소스에 접근하는 대상

    -인증(Authentication): 보호된 리소스에 접근한 대상에 대해 누구인지, 애플리케이션의 작업을 수행해도 되는

                                         주체인지 확인하는 과정 => 즉 누구인지?

    -인가(Authorize): 해당 리소스에 대해 접근 가능한 권한을 가지고 있는지 확인하는 과정(After Authentication, 인증이후)

                                 => 즉, 어떤것을 할 수 있는지?

    -권한: 어떠한 리소스에 대한 접근 제한, 모든 리소스는 접근 제어 권한이 걸려있음. 인가 과정에서  해당 리소스에 대한

                제한된 최소한의 권한을 가졌는지 확인

     

     

     

    Spring security 의 구조 

     

    인증 관리자 관련 

    1. 유저가 로그인을 시도(http request)

     

    2.AuthenticationFilter 에서부터 위와 같이 userDB 타고 들어감

     

    3.DB에 있는 유저라면 UserDetails 로 꺼내서 유저의 session 생성 

     

    4.spring security의 인메모리 세션저장소인 SecurityContextHolder에 저장

     

    5. 유저에게 session ID와 함께 응답을 내려줌

     

    6.이후 요청에서는 요청쿠키에서 JSESSIONID를 까봐서 검증 후 유효하면 Authentication 을 쥐어준다.

     

     

     

    • 인증관리자(Authentication Manager)와 접근 결정 관리자(Access Decision Manager)를 통해 사용자의 리소스 접근을 관리
    • 인증 관리자는 UsenamePasswordAuthenticationFilter, 접근 결정 관리자는 FilterSecurityInterceptor가 수행




     

     

    Security의 filter들 

     

     

    각 필터별 기능 설명 

     

    SecurityContextPersistenceFilter SecurityContextRepository 에서  SecurityContext를 로드하고 저장하는일을 담당함
    LongoutFilter 로그아웃 URL로 지정된 가상 URL에 대한 요청을 감시하고 매칭되는 요청이 있으면 사용자를 로그아웃 시킴
    UsernamePasswordAuthenticationFilter 사용자명과 비밀번호로 이뤄진 폼기반 인증에 사용하는 가상 URL요청을 감시하고 요청이 있으면 사용자의 인증을 진행함
    DefaultLoginPageGeneratingFilter 폼기반 또는 OpenID 기반 인증에 사용하는 가상 URL에 대한 요청을 감시하고 로그인 폼 기능을 수행하는데 필요한 HTML을 생성함
    BasicAuthenticationFilter HTTP 기본 이증 헤더를 감시하고 이를 처리함
    RequestCacheAwareFilter 로그인 성공 이후 인증 요청에 의해 가로채어진 사용자의 원래 요청을 재구성하는데 사용됨 SecurityContextHolderAwareRequestFilter HttpServletRequest를 HttpServletRequestWrapper를 상속하는 하위 클래스(SecurityContextHolderAwareRequestWrapper)로 감싸서 필터 체인상 하단에 위치한 요청 프로세서에 추가 컨텍스트를 제공함
    AnonymousAuthenticationFilter 이 필터가 호출되는 시점까지 사용자가 아직 인증을 받지 못했다면 요청 관련 인증 토큰에서 사용자가 익명 사용자로 나타나게 됨
    SessionManagementFilter 인증된 주체를 바탕으로 세션 트래킹을 처리해 단일 주체와 관련한 모든 세션들이 트래킹되도록 도움
    ExceptionTranslationFilter 이 필터는 보호된 요청을 처리하는 동안 발생할 수 있는 기대한 예외의 기본 라우팅과 위임을 처리함
    FilterSecurityInterceptor 이 필터는 권한부여와 관련한 결정을 AccessDecisionManager에게 위임해 권한부여 결정 및 접근 제어 결정을 쉽게 만들어 줌

     

     

    출처:devuna.tistory.com/55

    728x90
    반응형

    'Spring' 카테고리의 다른 글

    [Spring] model  (0) 2021.06.08
    Maven 이란?  (0) 2021.01.11
    Spring MVC 패턴  (1) 2020.10.25
    Spring에 커넥션풀(Connection Pool) 등록 - HikariCP  (1) 2020.10.24
    [Spring] 스프링 어노테이션 종류  (1) 2020.10.17

    댓글

Designed by Tistory.