BackEnd/Spring

Spring Security 총 정리

Leo.K 2023. 12. 22. 14:08

매번 프로젝트를 시작하는 과정에서 스프링 시큐리는 늘 말썽처럼 에러를 내곤 했다. 
정확한 개념 정리 없이 하던 내용으로만 개발을 하다보니 새로운 버전의 릴리즈를 사용할 때면 항상 난항을 겪곤 했다. 

이번 기회에 시간날때마다 제대로 공식 사이트의 가이드 문서를 분석하여 개념정리를 해볼까 한다. 

참고한 가이드 문서의 버전은 스프링 시큐리티 5.8.8버전이다.


1. Spring Security란? 


Spring Security는 Spring 기반의 애플리케이션의 보안(인증, 권한, 인가 등)을 담당하는 스프링 하위 프레임워크이다. 
Spring Security는 인증과 권한에 대한 처리를 Filter의 흐름에 따라 처리하고 있다. Filter는 Client에서 보낸 HTTP 요청이 Dispatcher Servlet으로 가기 전에 적용되기 때문에 가장 먼저 HTTP 요청을 받는다. 
반대로 Interceptor는 Dispather Servlet이 Controller단에 작업을 할당하기 전에 그 사이에 위치하기 때문에 적용 시점의 차이가 있다. 
Spring Security에서 보안에 관련된 체계적인 옵션을 제공해주기 때문에 개발자 입장에서는 보안관련 로직을 작성하지 않아도 된다. 꽤나 어렵지만 민감하고 다루기 어려운 부분을 프레임워크가 해결해주기 때문에 공부를 하지 않을 이유가 없다.


2. 인증 vs 인가 


세부 로직을 살펴보기 전에 Spring Security 에서 어플리케이션 보안을 구성하는, 선수로 이해되어야 하는 두 가지 영역을 짚고 넘어가보자. 

지속적으로 관리가 되는 웬만한 시스템에는 회원가입/로그인 기능이 있을것이다. 그 말은 서버 및 관리자 쪽에서 가입한 회원의 정보를 가지고 회원관리를 해야 한다는 뜻이다. 그런데 이제 막 신규 가입한 회원이 관리자 페이지에 들어가서 결제나 타인의 개인정보를 열람하는 등의 민감한 정보를 건드리면 어떻게 되겠나? 
이러한 로직을 수행하는 기본이 인증과 인가이다. 사용자는 서버쪽에 다양한 요청을 할 수 있지만, 서버측에서는 관리하는 사용자의 정보를 기반으로 해당 사용자가 열람할 수 있는 자원인지를 확인해야 한다. 

인증(Authentication) : 해당 사용자가 본인이 맞는지 확인하는 과정 (Ex: 본인인증) 

인가(Authorization) : 해당 사용자가 요청하는 자원을 실행 혹은 열람할 수 있는 권한이 있는가를 확인하는 과정

 

 

 

 

 

Reference
- 스프링 시큐리티 GUIDE DOC : https://docs.spring.io/spring-security/reference/5.8/index.html
- 스프링 시큐리티 API DOC : 

'BackEnd > Spring' 카테고리의 다른 글

테스트 프로젝트 생성_사원관리  (2) 2023.11.17
SpringBoot Day 2  (0) 2022.08.18
SpringBoot Day1  (0) 2022.08.10
SpringMVC_게시판_기능정리_국비  (0) 2022.07.15
SpringLegacyProject_SpringSecurity적용하기  (0) 2022.07.12