[Spring Security] 스프링 시큐리티

Lee Seung Jae·2021년 5월 28일
0

Spring Security

목록 보기
1/4

스프링 시큐리티

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

🔒스프링 시큐리티 특징과 구조

  • 보안과 관련하여 체계적으로 많은 옵션을 제공하여 편리하게 사용할 수 있다

  • Filter 기반으로 동작하여 MVC와 분리하여 관리 동작

  • 어노테이션을 통한 간단설정

  • 세션과 쿠키 방식으로 인증

  • 인증관리자(Authentication Manager)와 접근 결정 관리자(Access Decision Manager)를 통해 사용자의 리소스 접근을 관리

어떤 유저가 로그인을 했을 시에 기본 회원과 admin 유저가 있다고 가정을 하면 회원인지 admin인지 인증 관리자가 먼저 판단을 한다. 그래서 누구인지 명확하게 알고 이 로그인한 유저에 대한 권한을 접근 결정 관리자가 판단을 하는데 여기서 특정 기능에 대한 권한이 없다면 그 동작은 실행시켜주지 않게끔 동작을 수행한다.

  • 인증 관리자는 UsenamePasswordAuthenticationFilter, 접근 결정 관리자는 FilterSecurityInterceptor가 수행한다.

🔒스프링 시큐리티 기본 구조
스프링 시큐리티 기본 구조

📢각 필터별 기능 설명

필터기능
SecurityContextPersistenceFilterSecurityContextRepository에서 SecurityContext를 로드하고 저장하는 일을 담당함
LogoutFilter로그아웃 URL로 지정된 가상URL에 대한 요청을 감시하고 매칭되는 요청이 있으면 사용자를 로그아웃 시킴
UsernamePasswordAuthenticationFilter사용자 명과 비밀번호로 이뤄진 폼기반 인증에 사용하는 가상 URL요청을 감시하고 요청이 있으면 사용자의 인증을 진행함
DefaultLoginPageGeneratingFilter폼기반 또는 OpenId 기반 인증에 사용하는 가상URL에 대한 요청을 감시하고 로그인 폼 기능을 수행하는데 필요한 HTML을 생성한다
BasicAuthenticationFilterHTTP 기본 인증 헤더를 감시하고 이를 처리함
RequestCacheAwareFilter로그인 성공 이후 인증 요청에 의해 가로채어진 사용자의 원래 요청을 재구성하는데 사용됨 --> 현재 요청과 관련있는 캐시 요청이 있는지 확인하고 있다면 캐시요청을 처리해줌
AnonymousAuthenticationFilter이 필터가 호출되는 시점까지 사용자가 아직 인증을 받지 못했다면 요청 관련 인증 토큰에서 사용자가 익명 사용자로 나타나게 됨
SessionManagementFilter인증된 주체를 바탕으로 세션 트래킹을 처리해 단일 주체와 관련한 모든 세션들이 트래킹되도록 도움
ExceptionTranslationFilter보호된 요청을 처리하는 동안 발생할 수 있는 기대한 예외의 기본 라우팅과 위임을 처리
FilterSecurityInterceptor권한부여와 관련한 결정을 AccessDecisionManager에게 위임해 권한부여 결정 및 접근 제어 결정을 쉽게 만들어 줌
profile
💻 많이 짜보고 많이 경험해보자 https://lsj8367.tistory.com/ 블로그 주소 옮김

0개의 댓글