[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는 받지..
JWT(JSON Web Token)
·
Web
안녕하세요.오늘은 서버와 클라이언트 간에 인증 정보를 안전하게 주고받기 위해 사용되는 JWT(JSON Web Token)에 대해 공부해보겠습니다. JWT의 개념JWT(JSON Web Token)는 인증에 필요한 정보들을 JSON 객체에 담아 인코딩하고, 이를 기반으로 서명을 생성하여 토큰 형태로 사용하는 인증 방식입니다.기존의 세션 방식과 달리 서버가 사용자의 상태를 저장하지 않는 Stateless(무상태) 구조를 가집니다.클라이언트가 직접 토큰을 보유하고 있다가 요청 시마다 서버에 전달하여 인증을 처리하는 것이 특징입니다. JWT의 구조JWT는 점(.)을 구분자로 하여 세 가지 부분으로 구성됩니다구성 요소설명주요 내용Header토큰의 타입과 알고리즘 정보토큰 타입(JWT), 해싱 알고리즘(HS256 ..