Spring Boot 4.0 & Java 25 보안 아키텍처
Last Updated: 2026년 05월 07일
1. 보안 필터 체인 및 인증 흐름 (Sequence Diagram) – 사용자의 요청이 들어왔을 때 각 컴포넌트가 어떻게 상호작용하는지 보여줍니다.
2. 보안 아키텍처 클래스 구조 (Class Diagram) – 보안 패키지 내 주요 클래스 간의 관계와 역할을 정의합니다.
3. OAuth2 소셜 로그인 프로세스 (Flowchart) – 소셜 로그인 시 CustomOAuth2UserService와 SuccessHandler의 처리 과정을 보여줍니다.
1. 설정 및 인프라 (Configuration & Infrastructure)
보안 정책의 뼈대를 형성하는 파일들입니다.
- SecurityConfig: 프로젝트의 보안 “지휘소”입니다. HTTP 요청에 대한 권한 제어, 필터 체인 순서 정의, 그리고 권한 계층(Role Hierarchy)을 설정합니다.
- JwtProperties:
application.yml에 정의된 JWT 관련 설정값(Secret Key, 만료 시간 등)을 객체로 매핑하여 안전하게 관리합니다. - AuthProvider (Enum): 구글, 카카오 등 지원하는 소셜 로그인 공급자를 정의하고, 도메인이나 이름으로 공급자를 식별하는 로직을 담당합니다.
2. 필터 레이어 (Filter Layer)
사용자의 요청이 가장 먼저 통과하는 관문입니다.
- BotBlockFilter: 비정상적인 접근(봇, 과도한 요청)을 차단합니다. IP 기반의 Rate Limit이나 블랙리스트를 관리하여 서버 자원을 보호합니다.
- JwtAuthenticationFilter: 모든 요청에서 JWT 토큰을 검사합니다. 토큰이 유효하면 사용자를 인증된 상태로 전환하고, 만료되었다면 쿠키의 Refresh Token을 확인해 자동 갱신을 시도합니다.
3. 인증 처리 레이어 (Authentication Processing)
로그인 및 사용자 정보를 처리하는 핵심 비즈니스 로직입니다.
- CustomOAuth2UserService: 소셜 서비스로부터 받은 사용자 정보를 우리 DB에 저장하거나 업데이트합니다. 신규 유입자와 기존 회원을 구분하는 분기점이기도 합니다.
- PrincipalDetailsService: 일반 로그인이나 토큰 갱신 시, DB에서 사용자 정보를 조회하여 Spring Security가 이해할 수 있는 객체로 변환합니다.
- OAuth2SuccessHandler: 소셜 로그인 성공 직후 실행됩니다. JWT 토큰을 생성하여 쿠키에 담아주고, 클라이언트를 최종 성공 페이지로 안전하게 리다이렉트합니다.
4. 데이터 및 유틸리티 (Data & Utility)
인증 과정에서 사용되는 데이터 객체와 도구들입니다.
- PrincipalDetails: 우리 서비스의
Member엔티티를 Spring Security의UserDetails와OAuth2User규격에 맞게 감싸는 어댑터 객체입니다. - OAuth2UserInfo (Interface & Records): 각 소셜 서비스마다 제각각인 응답 데이터(JSON)를 동일한 규격(Email, Name 등)으로 뽑아내기 위한 데이터 변환기입니다.
- JwtTokenProvider: JWT의 생성, 파싱, 검증을 전담합니다. JJWT 라이브러리를 사용하여 토큰의 무결성을 보장합니다.
- CookieUtil:
ResponseCookie를 활용해 SameSite, HttpOnly 등 보안 설정이 반영된 쿠키를 생성하고 관리합니다. 조회수 중복 방지 쿠키 기능도 포함되어 있습니다.
댓글이 닫혔습니다.