Spring Boot 3.5·세션·OAuth2/OIDC·JWT·패스키·멀티테넌트 인가
ContractHub에서 인증과 업무 인가를 분리하고 CSRF, OIDC, JWT, 패스키, 보안 테스트와 사고 대응까지 완주한다.
상태: 출간 후보 웹교정쇄 · 8개 정책·6개 MockMvc 테스트 및 자동 QA 통과 · 보안 실무·법무 감수 대기 · 40개 장
이 책은 로그인 화면을 한 번 띄우고 끝나는 입문서가 아니다. 여러 회사가 계약서를 검토하고 승인하는 ContractHub를 만들며, 누가 로그인했는지 확인하는 인증, 그 사람이 이 회사의 이 계약에 이 작업을 해도 되는지 결정하는 인가, 잘못된 요청을 막는 공격 방어, 결정 근거를 남기고 사고를 복구하는 운영을 한 흐름으로 연결한다.
기준일은 2026년 8월 15일이다. Spring Boot 3 계열 최신 안정판인 Spring Boot 3.5.16, 그 계열이 관리하는 Spring Security 6.5.11, Java 21을 기준으로 예제를 고정했다. 최신 전체 계열은 Boot 4와 Security 7이지만, 이 책은 현업에 널리 남아 있는 Boot 3 애플리케이션을 안전하게 운영하고 다음 주 버전으로 이동할 수 있게 하는 데 목적이 있다. 버전은 출간 후 바뀌므로 Spring Boot 지원 버전, Spring Security 6.5 문서, Spring 보안 권고를 배포 때마다 다시 확인한다.
보안은 설정 한 줄의 성질이 아니라 경계, 정책, 테스트, 운영 절차가 함께 유지하는 시스템의 성질이다.
목차
- 1장. 로그인 기능보다 위협 모델을 먼저 만든다
- 2장. 버전과 실습 환경을 재현 가능하게 고정한다
- 3장. ContractHub를 실행하고 기본 보안을 관찰한다
- 4장. 요청이 FilterChainProxy를 지나가는 순서를 읽는다
- 5장. Authentication이 만들어지는 경로를 이해한다
- 6장. 비밀번호를 저장하지 않고 검증 가능하게 만든다
- 7장. 브라우저에는 세션을 기본값으로 검토한다
- 8장. 세션 고정과 동시 로그인을 정책으로 다룬다
- 9장. CSRF를 끄기 전에 자격 증명 전달 방식을 본다
- 10장. CORS는 인증 허용표가 아니다
- 11장. 보안 헤더와 콘텐츠 경계를 기본으로 둔다
- 12장. 401과 403을 다르게 설계한다
- 13장. URL 인가는 넓은 문을 닫는다
- 14장. 메서드 보안으로 업무 경계를 지킨다
- 15장. RBAC에 자원과 관계를 더한다
- 16장. 동일한 ContractHub 화면으로 권한을 실험한다
- 17장. 멀티테넌트 조건을 데이터 계층까지 내린다
- 18장. 가입과 이메일 검증을 계정 수명주기로 본다
- 19장. 비밀번호 재설정을 계정 탈취 경로로 다룬다
- 20장. OAuth2 Login과 OIDC를 역할에 맞게 사용한다
- 21장. 소셜 계정 연결과 탈퇴를 안전하게 만든다
- 22장. API는 JWT를 발급하기보다 먼저 제대로 검증한다
- 23장. JWT claim을 내부 권한으로 안전하게 변환한다
- 24장. Access token과 Refresh token의 수명을 분리한다
- 25장. 패스키를 비밀번호 대체와 step-up에 사용한다
- 26장. MFA와 step-up을 위험 작업에 맞춘다
- 27장. Credential stuffing과 자동화를 제어한다
- 28장. 감사 이벤트를 증거로 설계한다
- 29장. 관측 가능성과 개인정보를 함께 지킨다
- 30장. MockMvc로 긍정·부정 계약을 함께 고정한다
- 31장. 보안 테스트 피라미드를 만든다
- 32장. Secret, TLS, Proxy 경계를 배포 설계에 넣는다
- 33장. 컨테이너와 Kubernetes에서 최소 권한을 적용한다
- 34장. 보안 권고와 의존성 업데이트를 운영 루프로 만든다
- 35장. 사고 훈련 — Credential stuffing이 시작됐다
- 36장. 사고 훈련 — 다른 회사 계약이 보였다
- 37장. 사고 훈련 — JWK 회전 뒤 API만 401이다
- 38장. Boot 2에서 3으로, 3에서 4로 이동 경로를 만든다
- 39장. 14일 완주 과정으로 손에 익힌다
- 40장. 출간·출시 전 최종 판정표