Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Inverted Page Table
- 운영체제
- Shared Page
- 자바 알고리즘
- 알고리즘
- 메모리의 불연속적 할당
- Effective Access Time
- Segmentation with Paging
- 2단계 Page Table
- CS
- 메모리 관리
- 코드스테이츠 백엔드 과정 39기
- 스프링
- spring
- 문제풀이
- 리눅스
- 프로세스 동기화
- linux
- Page Table의 구현
- Allocation of Physical Memory
- 다단계 페이지 테이블
- 스프링부트
- 자바 문제풀이
- 웹 프로그래밍
- 프로세스 불연속 할당
- annotation
- jpa
- 프로세스 할당
- 웹개발
- springboot
Archives
- Today
- Total
GrowMe
[Spring] 스프링 시큐리티의 개념과 구조 본문
Spring Security
# Spring Security 개념
# 필터
# Spring Security 특징
# Spring Security 구조
# 필터 별 기능
*스프링 시큐리티란?
- 스프링 기반의 애플리케이션의 보안(인증과 권한, 인가 등)을 담당하는 스프링 하위 프레임워크
- 즉 인증(Authenticate, 누구인지?) 과 인가(Authorize, 어떤것을 할 수 있는지?)를 담당하는 프레임워크
- 주로 서블릿 필터(filter)와 이들로 구성된 필터체인(연속된 필터)으로의 구성된 위임모델을 사용
- 보안과 관련해서 체계적으로 많은 옵션을 제공해주기 때문에 개발자 입장에서는 일일이 보안관련 로직을 작성하지 않아도 된다는 장점
*필터??
- 웹서비스에서 스프링 시큐리티는 MVC 패턴 이전에 '필터'로서 동작한다.
- '필터'란 클라이언트 요청이 서블릿(프로그램)으로 가기 전에, 먼저 "사용자의 요청"을 단계별로 검증하고,
필요에 따라, 데이터 추가/변조/처리할 수 있도록 톰캣(WAS)에서 지원해주는 기능이다. - Spring Security는 DelegatingFilterProxy 라는 필터를 만들어 메인 Filter Chain에 끼워넣고, 그 아래 다시 SecurityFilterChain 그룹을 등록한다.
- 또한, URL에 따라 적용되는 Filter Chain을 다르게 하는 방법을 사용한다.
- 어떠한 경우에는 해당 Filter를 무시하고 통과하게 할 수도 있다.
*스프링 시큐리티의 특징
- 보안과 관련하여 체계적으로 많은 옵션을 제공하여 편리하게 사용할 수 있음
- Filter 기반으로 동작하여 MVC와 분리하여 관리 및 동작
- 어노테이션을 통한 간단한 설정
- Spring Security는 기본적으로 세션 & 쿠키방식으로 인증
*스프링 시큐리티의 기본구조
*각 필터 별 기능 설명
필 터 | 역 할 |
SecurityContext PersistenceFilter |
SecurityContextRepository에서 SecurityContext를 로드하고 저장하는 일을 담당함 |
LogoutFilter | 로그아웃 URL로 지정된 가상URL에 대한 요청을 감시하고 매칭되는 요청이 있으면 사용자를 로그아웃시킴 |
UsernamePassword AuthenticationFilter |
사용자명과 비밀번호로 이뤄진 폼기반 인증에 사용하는 가상 URL요청을 감시하고 요청이 있으면 사용자의 인증을 진행함 |
DefaultLoginPage GeneratingFilter |
폼기반 또는 OpenID 기반 인증에 사용하는 가상URL에 대한 요청을 감시하고 로그인 폼 기능을 수행하는데 필요한 HTML을 생성함 |
BasicAuthenticationFilter | HTTP 기본 인증 헤더를 감시하고 이를 처리함 |
RequestCacheAwareFilter | 로그인 성공 이후 인증 요청에 의해 가로채어진 사용자의 원래 요청을 재구성하는데 사용 SecurityContextHolderAwareRequestFilter HttpServletRequest를 HttpServletRequestWrapper를 상속하는 하위 클래스(SecurityContextHolderAwareRequestWrapper)로 감싸서 필터 체인상 하단에 위치한 요청 프로세서에 추가 컨텍스트를 제공함 |
Anonymous AuthenticationFilter |
이 필터가 호출되는 시점까지 사용자가 아직 인증을 받지 못했다면 요청 관련 인증 토큰에서 사용자가 익명 사용자로 나타나게 됨 |
SessionManagementFilter | 인증된 주체를 바탕으로 세션 트래킹을 처리해 단일 주체와 관련한 모든 세션들이 트래킹되도록 도움 |
ExceptionTranslationFilter | 이 필터는 보호된 요청을 처리하는 동안 발생할 수 있는 기대한 예외의 기본 라우팅과 위임을 처리함 |
FilterSecurityInterceptor | 이 필터는 권한부여와 관련한 결정을 AccessDecisionManager에게 위임해 권한부여 결정 및 접근 제어 결정을 쉽게 만들어 줌 |
-> (다음 주제에 계속...)스프링 시큐리티 기본 세팅
'Security' 카테고리의 다른 글
OAuth2를 스프링부트 프로젝트에 적용하기(with JWT 토큰) (0) | 2022.10.02 |
---|---|
JWT를 SpringBoot 프로젝트에 적용하기(2) - Refresh Token 적용 (0) | 2022.09.19 |
JWT를 SpringBoot 프로젝트에 적용하기(1) - Access 토큰 적용 (0) | 2022.08.24 |
[Spring] 스프링부트에서의 스프링 시큐리티 기본 세팅 (0) | 2022.07.05 |
Comments