EROKE ORIGINAL WEBBOOK

Spring Security 6, 인증에서 운영까지

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

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 보안 권고를 배포 때마다 다시 확인한다.

보안은 설정 한 줄의 성질이 아니라 경계, 정책, 테스트, 운영 절차가 함께 유지하는 시스템의 성질이다.

인증과 업무 인가, 데이터 경계를 분리한 ContractHub 구조
인증과 업무 인가, 데이터 경계를 분리한 ContractHub 구조

목차

  1. 1장. 로그인 기능보다 위협 모델을 먼저 만든다
  2. 2장. 버전과 실습 환경을 재현 가능하게 고정한다
  3. 3장. ContractHub를 실행하고 기본 보안을 관찰한다
  4. 4장. 요청이 FilterChainProxy를 지나가는 순서를 읽는다
  5. 5장. Authentication이 만들어지는 경로를 이해한다
  6. 6장. 비밀번호를 저장하지 않고 검증 가능하게 만든다
  7. 7장. 브라우저에는 세션을 기본값으로 검토한다
  8. 8장. 세션 고정과 동시 로그인을 정책으로 다룬다
  9. 9장. CSRF를 끄기 전에 자격 증명 전달 방식을 본다
  10. 10장. CORS는 인증 허용표가 아니다
  11. 11장. 보안 헤더와 콘텐츠 경계를 기본으로 둔다
  12. 12장. 401과 403을 다르게 설계한다
  13. 13장. URL 인가는 넓은 문을 닫는다
  14. 14장. 메서드 보안으로 업무 경계를 지킨다
  15. 15장. RBAC에 자원과 관계를 더한다
  16. 16장. 동일한 ContractHub 화면으로 권한을 실험한다
  17. 17장. 멀티테넌트 조건을 데이터 계층까지 내린다
  18. 18장. 가입과 이메일 검증을 계정 수명주기로 본다
  19. 19장. 비밀번호 재설정을 계정 탈취 경로로 다룬다
  20. 20장. OAuth2 Login과 OIDC를 역할에 맞게 사용한다
  21. 21장. 소셜 계정 연결과 탈퇴를 안전하게 만든다
  22. 22장. API는 JWT를 발급하기보다 먼저 제대로 검증한다
  23. 23장. JWT claim을 내부 권한으로 안전하게 변환한다
  24. 24장. Access token과 Refresh token의 수명을 분리한다
  25. 25장. 패스키를 비밀번호 대체와 step-up에 사용한다
  26. 26장. MFA와 step-up을 위험 작업에 맞춘다
  27. 27장. Credential stuffing과 자동화를 제어한다
  28. 28장. 감사 이벤트를 증거로 설계한다
  29. 29장. 관측 가능성과 개인정보를 함께 지킨다
  30. 30장. MockMvc로 긍정·부정 계약을 함께 고정한다
  31. 31장. 보안 테스트 피라미드를 만든다
  32. 32장. Secret, TLS, Proxy 경계를 배포 설계에 넣는다
  33. 33장. 컨테이너와 Kubernetes에서 최소 권한을 적용한다
  34. 34장. 보안 권고와 의존성 업데이트를 운영 루프로 만든다
  35. 35장. 사고 훈련 — Credential stuffing이 시작됐다
  36. 36장. 사고 훈련 — 다른 회사 계약이 보였다
  37. 37장. 사고 훈련 — JWK 회전 뒤 API만 401이다
  38. 38장. Boot 2에서 3으로, 3에서 4로 이동 경로를 만든다
  39. 39장. 14일 완주 과정으로 손에 익힌다
  40. 40장. 출간·출시 전 최종 판정표