Java & Spring 44

08. 인증 프로세스 전체 흐름

Spring Security 인증 프로세스 전체 흐름 초기화 → 필터 체인 → 인증 → 인가 — 요청부터 응답까지 완전 해부 Ch.1 초기화 Ch.2 인증 프로세스 Ch.3 인증 아키텍처 Ch.4 인증 상태 영속성 Ch.5 세션 관리 Ch.6 예외 처리 Ch.7 악용 보호 목차 초기화 과정: DelegatingFilterProxy → FilterChainProxy → SecurityFilterChain 필터 체인 전체 순서와 역할 인증 아키텍처: AuthenticationManager와 ProviderManager 폼 로그인 전체 흐름 ..

07. 악용 보호

악용 보호 CORS, CSRF, SameSite — 웹 보안의 세 가지 핵심 방어 메커니즘 목차 CORS (Cross-Origin Resource Sharing) CSRF (Cross-Site Request Forgery) CSRF 토큰 관리 CSRF 통합 (Forms, SPA, MPA) SameSite 쿠키 속성 웹 애플리케이션은 출처를 넘나드는 요청(Cross-Origin)과 위조 요청(CSRF)에 노출되어 있다. CORS는 브라우저가 허용된 출처의 교차 요청만 허용하도록 제어하고, CSRF는 서버가 서명된 토큰으로 정상 요청을 검증한다. SameSite 속성은 쿠키 전송 범위를 출처 수준에서..

06. 예외 처리

예외 처리 Spring Security의 인증·인가 예외를 감지하고 적절한 응답으로 처리하는 메커니즘 목차 예외 유형: AuthenticationException vs AccessDeniedException exceptionHandling() API ExceptionTranslationFilter 흐름 HttpSessionRequestCache와 요청 저장 Spring Security는 필터 체인 내에서 발생하는 보안 예외를 ExceptionTranslationFilter가 중앙에서 포착한다. 예외는 크게 인증 실패(AuthenticationException)와 인가 실패(AccessDeniedException)로 구분..

05. 세션 관리

세션 관리 Spring Security의 세션 생성 정책, 고정 보호, 동시 세션 제어 전략 목차 동시 세션 제어 세션 고정 보호 세션 생성 정책 SessionManagementFilter & ConcurrentSessionFilter Spring Security의 세션 관리는 인증된 사용자의 세션을 안전하게 유지하기 위한 여러 전략을 제공한다. 동시 세션 제어를 통해 동일 계정의 중복 로그인을 관리하고, 세션 고정 보호로 세션 하이재킹 공격을 방어하며, SessionCreationPolicy를 통해 세션 생성 방식을 세밀하게 제어할 수 있다. 이 모든 처리는 SessionManagementFilter와 Co..

04. 인증 상태 영속성

인증 상태 영속성 SecurityContext의 저장, 로드, 삭제 메커니즘과 요청 간 인증 유지 전략 목차 SecurityContextRepository SecurityContextHolderFilter SecurityContextHolderFilter vs SecurityContextPersistenceFilter securityContext() API 커스텀 인증 필터에서의 SecurityContextRepository 스프링 MVC 로그인 구현 인증 상태 영속성은 사용자가 한번 인증을 하면 이후 요청에서도 인증이 유지되는 메커니즘이다. 사용자의 인증 정보와 권한이 SecurityContext에..

02. 인증 프로세스

인증 프로세스 Spring Security의 다양한 인증 메커니즘과 필터 동작 원리 목차 폼 인증 - formLogin() 폼 인증 필터 - UsernamePasswordAuthenticationFilter 기본 인증 - httpBasic() 기본 인증 필터 - BasicAuthenticationFilter 기억하기 인증 - rememberMe() 기억하기 인증 필터 - RememberMeAuthenticationFilter 익명 사용자 - anonymous() 로그 아웃 - logout() 요청 캐시 - RequestCache / SavedRequest Spri..

01. 초기화 과정 이해

초기화 과정 이해 Spring Security의 자동 설정과 필터 체인 초기화 구조 목차 프로젝트 생성 및 자동 설정 SecurityBuilder / SecurityConfigurer HttpSecurity / WebSecurity DelegatingFilterProxy / FilterChainProxy 사용자 정의 보안 설정하기 Spring Security는 애플리케이션이 기동될 때 자동 설정을 통해 보안 인프라를 초기화한다. 이 챕터에서는 프로젝트 구성부터 SecurityBuilder/SecurityConfigurer의 관계, HttpSecurity와 WebSecurity의 역할, 그리고 DelegatingF..

OSIV · 낙관적 락 · 비관적 락

1. OSIV (Open Session In View)OSIV란?기본적으로 영속성 컨텍스트는 @Transactional 메서드 단위로 살아있다. OSIV가 켜지면 이 생명주기가 HTTP 요청 단위로 확장된다. Filter/Interceptor 레벨에서 영속성 컨텍스트를 열고, HTTP 응답이 클라이언트에게 보내질 때까지 유지한다.Spring Boot는 OSIV를 기본적으로 켜놓는다 (spring.jpa.open-in-view=true).OSIV가 켜져 있을 때HTTP Request 도착 → OpenEntityManagerInViewInterceptor.preHandle() → EntityManager 생성 (영속성 컨텍스트 시작) → Controller → Service (@Transaction..

N+1문제와 Fetch 전략 - LAZY, Fetch Join, @BatchSize

1. Fetch 전략 — EAGER vs LAZY전략 동작 JPA 기본값EAGER엔티티 로드 시 연관 엔티티도 즉시 JOIN으로 함께 로드@ManyToOne, @OneToOneLAZY연관 엔티티의 프록시만 만들어두고, 실제 접근 시 추가 쿼리@OneToMany, @ManyToMany @ManyToOne과 @OneToOne의 기본값이 EAGER라는 점이 함정이다. 명시하지 않으면 조회할 때마다 연관 엔티티를 함께 JOIN해온다. 모든 연관관계는 LAZY로 두는 것이 권장된다.@ManyToOne(fetch ..

Java & Spring/JPA 2026.05.09