[Spring] Spring Security 인증 처리
·
Framework/Spring
안녕하세요.오늘은 Spring Security의 인증(Authentication) 처리가 내부적으로 어떻게 동작하는지를 정리해보려고 합니다.특히 인증 흐름은 여러 컴포넌트가 위임 방식으로 협력하기 때문에, 어디서 무엇을 하는지 모르면 커스텀하기도 어렵습니다. Authentication 객체란Spring Security에서 "인증된 사용자"를 표현하는 핵심 인터페이스가 Authentication입니다.주요 필드는 다음과 같습니다.필드의미principal인증 주체 (보통 UserDetails)credentials자격 증명 (비밀번호, 토큰 등)authorities부여된 권한 목록authenticated인증 완료 여부 (true/false)details부가 정보 (요청 IP, 세션 ID 등)Authentic..
[Spring] Spring Security
·
Framework/Spring
안녕하세요.오늘은 Spring Security의 전체 개념과, 내부적으로 가장 핵심이 되는 FilterChain의 동작 원리를 정리해보려고 합니다.설정 코드보다 "어떻게 동작하는가" 에 초점을 맞춥니다. 동작 원리를 모르면 설정을 외워도 디버깅이 어렵기 때문입니다. 인증(Authentication)과 인가(Authorization)웹 애플리케이션의 보안은 결국 두 가지 질문에 답하는 일입니다.구분영문질문예시인증Authentication"당신은 누구입니까?"로그인인가Authorization"이 작업을 할 수 있습니까?"관리자 페이지 접근이 두 개념은 보안 처리의 출발점이지만, 이 글에서는 인증/인가 자체보다 "보안 처리가 요청 흐름 어디에 끼어드는가" 에 집중합니다. Spring Security 이전의..
[Spring] @Transactional의 8가지 함정
·
Framework/Spring
안녕하세요.지난 글에서는 @Transactional의 개념과 동작 원리에 대해 정리했습니다.@Transactional은 Spring AOP 기반의 프록시 방식으로 동작하며, 기본 롤백 정책이 RuntimeException과 Error에만 적용된다는 점을 살펴봤습니다.이제 실제 운영 환경에서 트랜잭션이 어떻게 문제로 이어지는지 살펴보겠습니다.대부분의 트랜잭션 이슈는 결국 두 가지 원인에서 시작됩니다.@Transactional은 프록시가 메서드 호출을 가로채는 방식으로 동작한다.체크 예외(Exception 및 하위)는 기본적으로 롤백되지 않는다.[Caller] ↓[프록시] ↓ 트랜잭션 시작[실제 Bean] ↓[프록시] ↓ 커밋 / 롤백이번 글에서는 운영에서 자주 마주치는 @Transaction..
[Spring] @Transactional
·
Framework/Spring
안녕하세요.오늘은 Spring의 annotation 중에 @Transactional이 무엇이며 내부적으로 어떻게 동작하는지를 정리해보려고 합니다.사용법은 단순해 보이지만 동작 방식을 모르고 쓰면 데이터 정합성 사고로 이어지기 쉬운 어노테이션입니다.이 글에서는 트랜잭션의 기본 개념부터 @Transactional이 내부적으로 어떤 방식으로 동작하는지까지 차근차근 살펴보겠습니다. Transaction이란?Transaction은 하나의 논리적 작업 단위로 묶인 데이터베이스 연산들의 집합입니다.핵심은 "전부 성공하거나, 전부 실패한다"는 점입니다. 가장 자주 인용되는 예시는 계좌 이체입니다.1. A 계좌에서 10만원 출금2. B 계좌에 10만원 입금1번이 성공한 뒤 2번이 실패하면 A의 돈만 사라지고 B는 받지..