스프링 시큐리티 개요

HUSII·2023년 8월 21일
0

스프링 시큐리티

목록 보기
2/7

스프링 시큐리티 공식 문서를 읽고, 라이브러리 코드들을 뜯어보면서 공부했습니다.
인증은 username/password 인증을 기준으로 설명합니다.


스프링 시큐리티는 인증, 인가, 그리고 보안을 제공하는 프레임워크입니다.


스프링 시큐리티의 특징

Servlet Filter를 기반으로 인증, 인가를 수행합니다.

기본적으로 세션 & 쿠키 방식으로 인증을 합니다.

Authentication 객체를 이용해 현재 인증된 유저의 정보를 제공합니다.

이제부터 스프링 시큐리티의 필터들이 어떤 동작을 수행하는지 간단히 알아보겠습니다.


스프링 시큐리티 기본 흐름

위 그림처럼 다양한 필터가 있는데, 여기서 인증과 관련된 주요 필터는 다음과 같습니다.

필터이름역할
LogoutFilter이 필터에 세팅해놓은 url에 접근했을 때, 로그아웃 시키는 필터 (default=/logout)
UsernamePasswordAuthenticationFilterForm 로그인으로 인증할때 사용하는 필터
BasicAuthenticationFilterHttp Basic 로그인으로 인증할떄 사용하는 필터
AnonymousAuthenticationFIlter이 필터에 도착했을때 SecurityContext에 Authentication 객체가 없다면(인증이 되지 않았다), 익명 사용자를 SecurityContext에 넣는다.
ExceptionTranslationFilter인증 & 인가 예외를 처리하는 필터
FilterSecurityInterceptor현재 요청하는 자원, url을 보고, 현재 인증된 유저가 권한이 있는지 판단하고 접근 제어하는 필터

여기서 Form 로그인 또는 Http Basic 로그인 중 하나만 사용하여,
UsernamePasswordAuthenticationFilter와 BasicAuthenticationFilter는 동시에 사용되지 않고, 둘 중에 하나만 사용됩니다.

다음 장부터
1. Authentication Architecture
2. 로그인을 통해 유저가 인증 되는 과정 (Form 로그인, Http Basic 로그인)
3. AnonymousAuthenticationFilter, ExceptionTranslationFilter
에 대해 알아 보겠습니다.

개인적으로 공부한 내용을 정리한 글입니다.
지적, 피드백 환영합니다.

profile
공부하다가 생긴 궁금한 것들을 정리하는 공간

0개의 댓글