본문 바로가기

Web/Spring-Security6

[Security] 시큐리티 파헤치기 (4) : 인증이란? (feat. Authentication) 🙋 들어가며 이번 글부터 시큐리티의 인증 시리즈를 다뤄볼 생각입니다. 인증에 대해서 무엇인지 알아보면서 인증 시리즈를 시작해 보겠습니다. 또한, 어떤 객체에 인증 정보를 담을지까지 알아보겠습니다. 🙆‍♂️ 인증(Authentication)? 인증이란, 어떤 사용자가 접근하고 있는지 확인하는 절차입니다. 보안에 민감한 정보를 다룬다면 당연히 누가 사용하는지 확인하고 접근시켜야 합니다. 자세하게 어떻게 동작하는지는 몰라도, 인증하려면 정보를 담아줄 그릇이 필요할 것 같습니다. 바로 이 그릇이 Authentication 객체입니다. 🪙 Authentication 인터페이스 Authentication 인터페이스는 인증 정보를 담는 하나의 토큰입니다. 실제 코드는 다음과 같이 구현되어 있습니다. public in.. 2023. 8. 17.
[Security] 시큐리티 파헤치기 (3) : 시큐리티 초기화, 다중 필터 체인 🙋 들어가며 이번 글에서는 시큐리티가 어떻게 초기화되고 어떤 값들이 생성되는지 알아보겠습니다. 시큐리티는 여러 개의 필터 체인을 관리할 수 있는데 어떻게 설정하는지 알아보겠습니다. 그리고 요청이 어떻게 알맞은 필터 체인에 타고 흐르는지도 알아보겠습니다. 📁 설정 파일 작성 (feat. Security 6) 시큐리티를 사용하기 위해서는 우선 설정 파일을 작성해야 합니다. 다음과 같이 단 어노테이션 하나만 달아주면 기본적인 시큐리티 설정이 완료됩니다. @Configuration @EnableWebSecurity // 기본 시큐리티 설정 public class SecurityConfig { } 바로 @EnableWebSecurity 입니다. 전혀 복잡하지 않죠? 😋 단순히 달아주기만 하면 애플리케이션이 메모리.. 2023. 8. 11.
[Security] 시큐리티 파헤치기 (2) : RequestCacheAwareFilter, RequestCache 🙋 들어가며 스프링 시큐리티 필터에는 다양한 필터들이 존재합니다. 오늘은 그중에서 인증, 인가를 위해서 가로채진 요청을 어떻게 다시 수행하는지 알아보겠습니다. ↩️ RequestCacheAwareFilter 이름에서 어떤 역할을 하는지 대략적으로 알 수 있습니다. 대충 요청에 대한 캐시를 알고 있는 필터 같습니다. 동작을 이해하기 위해서는 내부적으로 무엇을 가지고 있는지 알아야 합니다. 🏛️ 시큐리티 아키텍처 시큐리티는 결국 인증과 인가를 위한 프레임워크입니다. 인증을 위한 Authentication Manager와 인가를 위한 Access Decision Manager가 핵심입니다. 요청한 자원이 인증이 필요하다면 요청을 가로채 인증한 뒤 다시 원래 요청으로 되돌아가야 합니다. 시큐리티는 Reques.. 2023. 8. 2.
[Security] 시큐리티 파헤치기 (1) : DelegatingFilterProxy 🙋 들어가며 이전에 Spring Security를 너무 가볍게 공부한 것 같아서 A-Z로 다뤄보려고 합니다. 이번 편에서는 DelegatingFilterProxy에 대해서 이야기해 보겠습니다. 👩‍💼 DelegatingFilterProxy Security에서 빼놓을 수 없는 객체입니다. 이름에서 역할이 잘 명시되어 있습니다. 이름 그대로 Filter를 위임(deleagte)하는 대리자(proxy)입니다. 🤷 왜 위임하나요? 전체적인 흐름을 이해하고 왜 위임하는지 알아보겠습니다. 먼저 클라이언트의 요청이 들어오면 서블릿 컨테이너는 필터 체인을 생성합니다. 이후 요청이 필터와 서블릿을 통과하면 스프링 내부로 진입하게 됩니다. 필터 체인 : HttpServletRequest를 처리하는 서블릿과 필터를 포함하는.. 2023. 8. 2.
[Security] Spring Security (2) ✍️ 학습 목표 의존성 추가 사용자 설정 권한 설정과 표현 📌 의존성 추가하기 🧷 Maven project - pom.xml org.springframework.boot spring-boot-starter-security 🧷 Gradle project - build.gradle implementation 'org.springframework.boot:spring-boot-starter-security' 스프링 시큐리티의 의존성을 추가하면 다음과 같은 기능을 사용할 수 있다. 서버가 가동되면 스프링 시큐리티 초기화 작업과 웹 보안 설정이 이루어진다. 모든 요청이 인증되어야 자원에 접근할 수 있다. 인증 방식은 폼 로그인 방식과 httpBasic 로그인 방식을 제공한다. 기본 로그인·로그아웃 페이지(+기본 .. 2022. 10. 5.
[Security] Spring Security (1) ✍️ 학습 목표 Spring Security란? Architecture 이해하기 📌 Spring Security 스프링 프레임워크에서 보안(인증, 인가)을 담당하는 스프링 하위 프레임워크이다. 시큐리티를 공부하기 위해 짚고갈 용어들이 존재한다. 🔒 보안 용어 Authentication, 인증 : 애플리케이션을 접근하는 사람이 누구인지 확인하는 절차 Authorization, 인가 : 확인된 사용자의 권한을 확인하고 부여하는 절차 Principal, 접근 주체 : 접근하려는 대상 Credential, 자격증명 : 비밀번호, 열쇠와 같은 인증을 위한 키 정리하면 스프링 시큐리티는 보호된 리소스에 접근하는 대상이 '누구'인지 확인해주고 그 '누구'에게 부여된 권한에 맞게 기능들을 이용할 수 있게 한다. ✔️ .. 2022. 10. 5.