*책 내용과 다르게, 다음과 같은 환경에서 프로젝트 생성
- Windows11(윈도우 11) 환경
- 자바 JDK 17 버전 설치 https://yungenie.tistory.com/11
[Java] 차근차근 Java 설치하기 (JDK17, Window 11)
자바 개발 도구 설치 방법에 대해서 알아보겠습니다. Java17은 LTS(Long Term Support : 장기 지원) 릴리즈로 1년 후까지 기술 지원 및 버그를 개선한 서비스를 제공받을 수 있습니다. 업데이트 버전을 꾸
yungenie.tistory.com
- 스프링 부트 4.31.0 사용 - STS(Spring Tool Suite) 설치(Spring Tools for Eclipse - https://spring.io/tools)
=> https://priming.tistory.com/147 참고
[Windows] Spring Tool Suite 4(STS 4) 다운로드 및 설치
STS란?Spring Tool Suite(STS)는 스프링 프로젝트를 생성하고, 개발할 수 있게 해주는 도구입니다. STS 설치 과정에 대해 설명드리겠습니다. 설치 파일 다운로드STS 공식 사이트에서 설치 파일을 다운로
priming.tistory.com

- MySQL Community Server 8.0.42 설치 https://dev.mysql.com/downloads/mysql/
MySQL :: Download MySQL Community Server
Select Version: 9.3.0 Innovation 8.4.5 LTS 8.0.42 Select Operating System: Select Operating System… Microsoft Windows Ubuntu Linux Debian Linux SUSE Linux Enterprise Server Red Hat Enterprise Linux / Oracle Linux Fedora Linux - Generic Oracle Solaris mac
dev.mysql.com

- Gradle
**STS에서 Gradle 프로젝트 생성한 과정



*** 함께 보면 좋은 글
스프링 부트 핵심 가이드(장정우 지음) - 스프링 부트 개요
1. 스프링 프레임워크자바(Java) 기반 애플리케이션 프레임워크로, 엔터프라이즈급(기업 환경 대상 개발) 애플리케이션을 위한 다양한 기능 제공-> 오픈소스 경량급 애플리케이션 프레임워크로
keep-programming-study.tistory.com
스프링 부트 핵심 가이드(장정우 지음) - 개발에 앞서 알면 좋은 기초 지식
1. 서버 간 통신마이크로서비스 아키텍처에서 한 서버가 다른 서버에 통신을 요청하는 것을 의미-> 한 대는 서버/다른 한 대는 클라이언트가 됨 가장 많이 사용되는 방식은 HTTP/HTTPS 방식(TCP/IP, SOA
keep-programming-study.tistory.com
1. 보안 용어 이해
1) 인증(authentication)
- 사용자가 누구인지 확인하는 단계
- 예시: 데이터베이스에 등록된 아이디와 패스워드를 사용자가 입력한 것들과 비교하여 일치 여부를 확인한 다음 로그인
-> 로그인 성공 시 서버에서 응답으로 사용자에게 토큰(token) 전달,
실패 시 사용자가 토큰을 받지 못해 원하는 리소스에 접근 불가
2) 인가(authorization)
- 인증을 통해 검증된 사용자가 내부 리소스에 접근할 때, 사용자가 해당 리소스에 접근 권한이 있는지 확인
- 일반적으로 인증 단계의 토큰이 인가 내용을 포함하고 있으며,
사용자가 리소스에 접근할 때 토큰을 전달하면 서버에서 토큰을 통해 권한을 확인하고 인가를 수행하는 것 - 예시: 로그인한 사용자가 특정 게시판의 글을 보려고 하는 경우, 게시판 접근 등급을 확인해 접근 허가 or 접근 거부
3) 접근 주체(principal)
- 애플리케이션의 기능을 사용하는 주체: 사용자, 디바이스, 시스템 등
- 애플리케이션에서 인증 과정으로 접근 주체가 신뢰 가능한지 판단하고, 인가 과정으로 접근 주체의 권한 확인
2. 스프링 시큐리티(Spring Security)
1) 개요
- 스프링 프레임워크에서 제공하는 강력한 보안 프레임워크
- 웹 애플리케이션의 인증, 인가 등 보안 기능을 체계적으로 처리하는 스프링 하위 프로젝트 중 하나
- 보안과 관련된 많은 기능을 제공하기 때문에, 이를 활용하여 편리하게 원하는 기능을 설계
- 기본적으로 모든 요청을 필터 체인(Filter Chain)을 통해 검사하며, 로그인·권한 관리·세션 제어·데이터 보호까지 폭넓게 지원
- 모든 요청이 DispatcherServlet에 도달하기 전에,
필터 체인(Filter Chain, 서블릿 컨테이너에서 관리하는 ApplicationFilterChain을 의미)을 통해 여러 보안 필터를 거쳐 검사
-> DispatcherServlet: Model, View, Controller를 연결하는 중심 허브로, 개별 서블릿 등록 없이 모든 요청 관리 - 개발자가 SecurityFilterChain 또는 WebSecurityConfigurerAdapter(구버전) 등을 통해
보안 설정(Security Configuration) 커스터마이징 가능 - 자세한 내용은 공식 문서 참조: https://spring.io/projects/spring-security
2) 동작 구조
- 서블릿 필터(Servlet Filter)를 기반으로 동작하며, 필터는 다음과 같이 DispatcherServlet 앞에 배치

- 클라이언트에서 애플리케이션으로 요청을 보내면, 서블릿 컨테이너는 URI를 확인하여 필터와 서블릿을 매핑
-> 스프링 시큐리티는 사용하고자 하는 필터체인을 서블릿 컨테이너의 필터 사이어세 동작하게 하기 위해,
아래와 같이 DelegatingFilterProxy 사용
- DelegatingFilterProxy: 서블릿 컨테이너의 생명주기와 스프링 애플리케이션 컨텍스트(Application Context) 사이에서
다리 역할을 수행하는 필터 구현체
=> 표준 서블릿 필터를 구현하고 있으며,
역할을 위임할 필터체인 프록시(FliterChainProxy, 스프링 부트의 자동 설정으로 자동 생성)를 내부에 갖고 있음) - FilterChainProxy: 스프링 시큐리티에서 제공하는 필터로서, 보안 필터체인(SecurityFilterChain)을 통해 많은 보안 필터(Security Filter)를 사용 가능
-> 여기서 사용 가능한 보안 필터체인은 WebSecurityConfigurerAdapter 클래스를 상속받아 설정하며,
List 형식으로 담을 수 있게 설정되어 있어 URI 패턴에 따라 특정 보안필터 체인을 선택하여 사용
- DelegatingFilterProxy: 서블릿 컨테이너의 생명주기와 스프링 애플리케이션 컨텍스트(Application Context) 사이에서

- 별도로 추가 설정을 하지 않으면, 스프링 시큐리티에서는 SecurityFilterChain에서 사용하는 필터 중
UsernamePasswordAuthenticationFilter를 통해 인증 처리
-> 인증이 실패할 경우, 로그인 폼이라는 화면을 보내는 역할
*UsernamePasswordAuthenticationFilter를 통한 인증 수행 과정 (순서대로)

- 클라이언트로부터 요청을 받으면, 서블릿 필터에서 SecurityFilterChain으로 작업이 위임되고
그 증 UsernamePasswordAuthenticationFilter(위 그림의 AuthenticationFilter)에서 인증 처리 - UsernamePasswordAuthenticationFilter는 요청 객체(HttpServletRequest)에서
username과 password를 추출하여 토큰 생성 - 생성한 토큰을 AuthenticationManager(구현체로 ProviderManager 사용)에 전달
- ProviderManager가 인증을 위해 AuthenticationProvider로 토큰 전달
- AuthenticationProvider가 토큰의 정보를 UserDetailsService에 저장
- UserDetailsService가 전달받은 정보를 통해, 데이터베이스에서 일치하는 사용자를 찾아 UserDetails 객체 생성
- 생성된 UserDetails 객체는 AuthenticationProvider로 전달되는데,
AuthenticationProvider에서 인증을 수행하여 성공하면 ProviderManager로 권한을 담은 토큰 전달 - ProviderManager가 검증된 토큰을 AUthenticationFilter로 전달
- AuthenticationFilter가 검증된 토큰을 SecurityContextHolder에 있는 SecurityContext에 저장
'스프링(Spring), 스프링부트(SpringBoot) > 스프링부트(SpringBoot) 기초' 카테고리의 다른 글
| 스프링부트 핵심 가이드(장정우 지음) - 스프링 시큐리티(Spring Security)와 JWT 2편 (1) | 2026.04.16 |
|---|---|
| 스프링부트 핵심 가이드(장정우 지음) - 스프링 시큐리티(Spring Security)와 JWT 1편 (1) | 2026.04.10 |
| 스프링부트 핵심 가이드(장정우 지음) - 서버 간 통신 2: WebClient (0) | 2026.03.18 |
| 스프링부트 핵심 가이드(장정우 지음) - 서버 간 통신 1: RestTemplate (1) | 2026.03.03 |
| 스프링부트 핵심 가이드(장정우 지음) - 액추에이터 주요 기능 살펴보기, 액추에이터 커스텀 기능 만들기 (0) | 2026.02.19 |