상세 컨텐츠

본문 제목

안쪽까지 들여다보는 스프링 시큐리티

새로 나온 책

by 비제이퍼블릭 2026. 3. 3. 14:23

본문


제목
안쪽까지 들여다보는 스프링 시큐리티

부제 구현하며 이해하는 인증·인가·OAuth 2.0·테스트

저자 강준현

출판사 비제이퍼블릭(BJ퍼블릭)

출간/배본가능일 2026 2 27

정가 42,000

페이지 672

판형 188*257

ISBN 979-11-6592-338-9 (93000)

 

관련분류 – 카테고리 분류
IT 모바일 > 네트워크/해킹/보안 > 보안/해킹

상품의 태그
#보안 #스프링시큐리티

소개
안쪽까지 이해할 때 스프링 시큐리티의 정수가 보입니다.”

드디어 나왔습니다. 이토록 심도 있게 스프링 시큐리티를 다룬 국내 저자의 책은 없었습니다. 스프링 시큐리티는 스프링 생태계의 핵심적인 보안 프레임워크입니다. 간단한 설정만으로 인증과 인가 구조에 기반한 안정적인 보안 구조를 제공합니다. 스프링 시큐리티를 입문 수준에서 익히는 것은 어렵지 않습니다. 하지만 상황에 맞는 커스터마이징, 예외 처리, 구성 변경 등 문제 해결을 위해서는 내부 구조와 원리를 이해하는 것이 필수입니다. 많은 스프링 시큐리티 사용자가 당황하게 되는 지점도 이와 관련이 있습니다. 안정적이고 간편하게 기능을 제공하는 스프링 시큐리티의 간편함이 역설적으로 더 심화한 설정이 요구되는 순간 블랙박스를 만드는 셈입니다.

스프링 시큐리티의 블랙박스를 열어봅니다.”
먼저 스프링 시큐리티의 인증, 인가 실행 원리를 큰 흐름에서 살펴본 다음 특정 컴포넌트에 대한 세세한 내용을 다룹니다. 이론적인 설명을 다룬 다음엔 간단한 시나리오를 바탕으로 실습하여 이론을 넘어서 코드로 들여다볼 수 있습니다. 폼 로그인, HTTP 기본 인증, 리멤버-미 등 다양한 인증 방식의 내부 메커니즘을 분석하고 이를 실제로 적용하여 회원가입부터 로그인 처리까지 구현하는 프로세스를 익힐 수 있습니다. 또한 실무에서 필수적인 CSRF CORS 방어를 통한 애플리케이션 보호 방법과, OAuth 2.0 OpenID Connect를 활용한 구글·네이버 SNS 로그인 및 KeyCloak 연동과 관련된 내용 등을 상세히 다루어 현대적인 인증 시스템 구축의 전반을 경험할 수 있도록 하였습니다.

 

목차
읽기 전 가이드

1부. 스프링 시큐리티 소개
_1장. 서블릿 필터 체인과 아키텍처
__1.1. 서블릿 컨테이너와 서블릿 필터 체인
___1.1.1. 서블릿과 서블릿 컨테이너
___1.1.2. 서블릿 컨테이너 종류
___1.1.3. 서블릿 필터 체인
__1.2. 서블릿 필터 체인 확장
___1.2.1. DelegatingFilterProxy 클래스
__1.3. 시큐리티 필터 체인
___1.3.1. 시큐리티 필터 체인 동작 과정
___1.3.2. 인증/인가 필터들
_2장. Hello Spring Security
__2.1. 인텔리제이 설치
__2.2. 첫 스프링 시큐리티 프로젝트 만들기
___2.2.1. 프로젝트 만들기
___2.2.2. 프로젝트 살펴보기
__2.3. 컨트롤러 만들기
__2.4. 의존성 추가하기
___2.4.1. 에러 응답
___2.4.2. 에러 원인
__2.5. 사용자 인증받기
___2.5.1. 폼 로그인 인증
___2.5.2. HTTP 기본 인증

 2부. 인증
_3장. 스프링 시큐리티 인증 아키텍처
__3.1. Authentication 인스턴스
__3.2. 인증 매니저와 제공자
___3.2.1. 인증 매니저
___3.2.2. 인증 제공자
__3.3. Authentication 인스턴스 보관
___3.3.1. 시큐리티 컨텍스트
___3.3.2. 시큐리티 컨텍스트 홀더
___3.3.3. 시큐리티 컨텍스트 보관 전략
___3.3.4. 시큐리티 컨텍스트 보관 전략별 특징
____3.3.4.1. ThreadLocal 클래스
____3.3.4.2. 스레드 로컬 모드
____3.3.4.3. 상속 가능한 스레드 로컬 모드
____3.3.4.4. 전역 모드
__3.4. 인증 프로세스 필터
__3.5. 인증 핸들러
___3.5.1. 인증 성공 핸들러
___3.5.2. 인증 실패 핸들러
___3.5.3. 포워드와 리다이렉트
_4장. 폼 로그인 인증
__4.1. 폼 로그인 디폴트 설정과 필터 체인
___4.1.1. UsernamePasswordAuthenticationFilter 클래스
___4.1.2. DefaultLoginPageGeneratingFilter 클래스
___4.1.3. DefaultLogoutPageGeneratingFilter 클래스
__4.2. 폼 로그인 사용자 인증 프로세스
__4.3. 폼 로그인 인증 컴포넌트
___4.3.1. 사용자 인증 작업
___4.3.2. 사용자 정보 조회
___4.3.3. 비밀번호 암호화
____4.3.3.1. NoOpPasswordEncoder 클래스
____4.3.3.2. BCryptPasswordEncoder 클래스
____4.3.3.3. Argon2PasswordEncoder 클래스
____4.3.3.4. Pbkdf2PasswordEncoder 클래스
____4.3.3.5. SCryptPasswordEncoder 클래스
____4.3.3.6. DelegatingPasswordEncoder 클래스
_5장. 폼 로그인 인증 구현하기
__5.1. 프로젝트 구성
__5.2. 회원 가입 구현
___5.2.1. 회원 가입 페이지
___5.2.2. SignUpController 클래스
___5.2.3. SignUpService 클래스
___5.2.4. UserRepository 인터페이스
___5.2.5. SignUp 레코드 클래스
___5.2.6. UserEntity 클래스
___5.2.7. SecurityConfig 클래스
___5.2.8. 사용자 회원 가입
__5.3. 로그인 구현
___5.3.1. 로그인 페이지
___5.3.2. LoginController 클래스
___5.3.3. UserService 클래스
___5.3.4. User 클래스
___5.3.5. SecurityConfig 클래스
___5.3.6. 사용자 로그인
___5.3.7. 인증 완료 리다이렉트와 SecurityContextHolderFilter 클래스
__5.4. 메인 화면과 로그아웃 구현
___5.4.1. 홈페이지
___5.4.2. HomeController 클래스
___5.4.3. @AuthenticationPrincipal 애너테이션
___5.4.4. SecurityConfig 클래스
___5.4.5. 사용자 로그아웃
__5.5. 인증 실패 처리 구현
___5.5.1. 인증 예외 처리 과정
___5.5.2. 로그인 페이지
___5.5.3. LoginController 클래스
___5.5.4. SecurityConfig 클래스
___5.5.5. 인증 실패 메시지 확인
_6장. HTTP 기본 인증
__6.1. HTTP 기본 인증이란?
__6.2. HTTP 기본 인증 디폴트 설정과 필터 체인
___6.3. HTTP 기본 인증 예외 처리
_7 장. HTTP 기본 인증 구현하기
__7.1. 프로젝트 구성
__7.2. 사용자 정보 준비하기
__7.3. 시큐리티 필터 체인 구성
__7.4. API 엔드포인트 구현
__7.5. 사용자 인증
___7.5.1. 인증되지 않은 사용자
___7.5.2. 잘못된 자격 증명을 가진 사용자
___7.5.3. 옳은 자격 증명을 가진 사용자
___7.5.4. 권한이 맞지 않은 사용자
__7.6. 렐름 이름 변경
___7.6.1. SecurityConfig 클래스
___7.6.2. 잘못된 자격 증명을 가진 사용자 요청
_8 장. 리멤버-미 인증
__8.1. 리멤버-미 디폴트 설정과 필터 체인
__8.2. 리멤버-미 사용자 인증 프로세스
___8.2.1. 로그인 사용자 기억하기
___8.2.2. 리멤버-미 사용자 인증
__8.3. 리멤버-미 인증 컴포넌트
___8.3.1. 리멤버-미 인증 토큰
___8.3.2. 리멤버-미 인증 제공자
___8.3.3. 리멤버-미 인증 서비스
____8.3.3.1. NullRememberMeServices 클래스
____8.3.3.2. AbstractRememberMeServices 클래스
____8.3.3.3. TokenBasedRememberMeServices 클래스
____8.3.3.4. PersistentTokenBasedRememberMeServices 클래스
____8.3.3.5. 토큰 기반과 영속성 토큰의 장단점
_9장. 리멤버-미 인증 구현하기
__9.1. 프로젝트 구성
__9.2. 메인 화면 구현
___9.2.1. 메인 페이지
___9.2.2. MainController 클래스
___9.2.3. SecurityConfig 클래스
___9.2.4. 메인 화면
__9.3. 로그인 구현
___9.3.1. 로그인 페이지
___9.3.2. LoginController 클래스
___9.3.3. AppConfig 클래스
___9.3.4. SecurityConfig 클래스
___9.3.5. 사용자 로그인
__9.4. 홈 화면 구현
___9.4.1. 홈페이지
___9.4.2. HomeController 클래스
___9.4.3. 홈페이지 자동 로그아웃
__9.5. 리멤버-미 서비스와 데이터베이스 연결
___9.5.1. AppConfig 클래스
___9.5.2. SecurityConfig 클래스
___9.5.3. 영속성 토큰 테이블 사용 확인하기
_10장. 익명 인증
__10.1. 익명 인증 필터
__10.2. 익명 인증 관련 설정
___10.2.1. 인증 주체 변경
___10.2.2. 역할 이름 변경
___10.2.3. 익명 인증 비활성화
_11 장. 인증 이벤트
__11.1. 인증 이벤트 프로세스
__11.2. 인증 이벤트 참여 컴포넌트
___11.2.1. 인증 이벤트 발행자
____11.2.1.1. NullEventPublisher 클래스
____11.2.1.2. DefaultAuthenticationEventPublisher 클래스
___11.2.2. 스프링 이벤트
_12 장. 인증 이벤트 구현하기
__12.1. 프로젝트 구성
__12.2. 시큐리티 필터 체인 및 컨트롤러 준비
___12.2.1. HomeController 클래스
___12.2.2. SecurityConfig 클래스
___12.2.3. AppConfig 클래스
__12.3. 인증 성공 이벤트 리스너 구현
___12.3.1. LoginSuccessEventListener 클래스
___12.3.2. 인증 성공 이벤트 확인
__12.4. 인증 실패 이벤트 리스너 구현
___12.4.1. LoginFailureEventListener 클래스
___12.4.2. 인증 실패 이벤트 확인

3부. 인가
_13 장. 스프링 시큐리티 인가 아키텍처
__13.1. 사용자 권한
__13.2. 인가 매니저
__13.3. 레거시 인가 아키텍처
___13.3.1. 접근 결정 관리자
___13.3.2. 접근 결정 투표자
___13.3.3. 레거시 인가 처리 마이그레이션
_14 장. HTTP 요청 기반 인가
__14.1. 인가 필터
___14.1.1. 인가 필터 구성하기
___14.1.2. AuthorizationFilter 클래스
__14.2. 인증/인가 예외 처리
___14.2.1. ExceptionTranslationFilter 인스턴스와 인증/인가 예외 처리
___14.2.2. AuthenticationEntryPoint 인스턴스
__14.3. 요청 일치자
___14.3.1. 매칭 조건과 접근 가능 조건
___14.3.2. RequestMatcher 인스턴스
____14.3.2.1. AntPathRequestMatcher 클래스
____14.3.2.2. MvcRequestMatcher 클래스
____14.3.2.3. AnyRequestMatcher 클래스
____14.3.2.4. ELRequestMatcher 클래스
____14.3.2.5. RegexRequestMatcher 클래스
__14.4. HTTP 요청 기반 인가 매니저
___14.4.1. RequestMatcherDelegatingAuthorizationManager 클래스
___14.4.2. AuthenticatedAuthorizationManager 클래스
___14.4.3. AuthorityAuthorizationManager 클래스
___14.4.4. AuthoritiesAuthorizationManager 클래스와 역할 계층
_15 장. HTTP 요청 기반 인가 구현하기
__15.1. 프로젝트 구성
__15.2. 리소스 엔드포인트 및 가상 사용자 준비
___15.2.1. 리소스 엔드포인트 준비
___15.2.2. 가상 사용자 추가
__15.3. 시큐리티 필터 체인 설정
__15.4. 허용된 리소스 접근
__15.5. 거부된 리소스 접근
__15.6. 인증 접근 제어
__15.7. 권한 접근 제어
__15.8. 역할 접근 제어
__15.9. 역할 계층 접근 제어
__15.10. 복합 조건 접근 제어
___15.10.1. AuthorizationManagers 클래스
___15.10.2. 시큐리티 필터 체인 변경
_16장. 메서드 기반 인가
__16.1. 스프링 AOP
___16.1.1. 관점 지향 프로그래밍
___16.1.2. 스프링 AOP
__16.2. 인가 어드바이저
___16.2.1. 포인트컷 애너테이션과 인가 어드바이저
___16.2.2. 인가 어드바이저 동작 과정
__16.3. 메서드 기반 인가 매니저
___16.3.1. @HandleAuthorizationDenied 애너테이션
___16.3.2. @AuthorizeReturnObject 애너테이션
__16.4. 메서드 시큐리티 표현식 핸들러
___16.4.1. 평가 컨텍스트
___16.4.2. 루트 객체
__16.5. 기타 메서드 기반 인가 애너테이션들
___16.5.1. @Secured 애너테이션
___16.5.2. JSR-250 애너테이션
_17장. 메서드 기반 인가 구현하기
__17.1. 시큐리티 설정 및 가상 테스트 사용자 준비
__17.2. 리소스 및 가상 테스트 사용자 준비
___17.2.1. 서비스 객체 준비
___17.2.2. 리포지토리 객체 준비
___17.2.3. 테스트 사용자 준비
__17.3. 거부된 리소스 접근
__17.4. 사전 접근 제어
___17.4.1. 접근 제어 규칙
___17.4.2. 관리자 역할 사용자의 신규 사용자 추가
___17.4.3. 직원 역할 사용자의 신규 사용자 추가
__17.5. 사후 접근 제어
___17.5.1. 접근 제어 규칙
___17.5.2. 사용자 직원 정보 조회
__17.6. 사전 필터 처리
___17.6.1. 접근 제어 규칙 및 사전 필터링 규칙
___17.6.2. 관리자 역할 사용자의 다수 신규 사용자 추가
__17.7. 사후 필터 처리
___17.7.1. 사후 필터링 규칙
___17.7.2. 사용자 직원 정보 조회
__17.8. 역할 계층 접근 제어
_18장. 인가 이벤트
__18.1. 인가 이벤트 프로세스
__18.2. 인가 이벤트 참여 컴포넌트
_19 장. 인가 이벤트 구현하기
__19.1. 프로젝트 구성
__19.2. 시큐리티 필터 체인 및 인가 이벤트 발행자 준비
___19.2.1. SecurityConfig 클래스
___19.2.2. AppConfig 클래스
__19.3. 리소스 엔드포인트 준비
__19.4. 인가 이벤트 발행자 준비
__19.5. 인가 실패 이벤트 리스너 구현

4부. 애플리케이션 보호
_20장. 사이트 간 요청 위조
__20.1. 쿠키와 세션
___20.1.1. HTTP 무상태 특성
___20.1.2. 세션
___20.1.3. 쿠키
___20.1.4. 스프링 시큐리티의 사용자 인증 프로세스 속 쿠키와 세션
__20.2. CSRF 공격이란?
__20.3. CSRF 공격에 취약한 애플리케이션
___20.3.1. 시큐리티 필터 체인 준비
___20.3.2. 가상 사용자 준비
___20.3.3. 메인 컨트롤러
___20.3.4. 메인 페이지
___20.3.5. 사용자 역할 업데이트 컨트롤러
___20.3.6. 애플리케이션 실행
__20.4. CSRF 공격 애플리케이션
___20.4.1. 공격 페이지 컨트롤러
___20.4.2. 공격 페이지
___20.4.3. 호스트 이름 추가하기
___20.4.4. CSRF 공격하기
__20.5. CSRF 공격 방어 프로세스
___20.5.1. 스프링 시큐리티 CSRF 방어 프로세스
___20.5.2. CSRF 방어 참여 컴포넌트
____20.5.2.1. CSRF 토큰 저장소
____20.5.2.2. CSRF 토큰 요청 핸들러
__20.6. CSRF 공격 방어 프로세스 구현하기
___20.6.1. CSRF 방어 활성화하기
___20.6.2. CSRF 토큰 추가하기
___20.6.3. CSRF 방어 여부 확인하기
_21 장. 교차 출처 리소스 공유(CORS)
__21.1. 동일 출처 정책이란?
__21.2. CORS 정책이란?
___21.2.1. 단순 요청
___21.2.2. 프리플라이트 요청과 실제 요청
___21.2.3. CORS 주요 헤더
__21.3. CORS 정책 적용하기
___21.3.1. 시큐리티 필터 체인 준비
___21.3.2. 메인 컨트롤러
___21.3.3. 메인 페이지
___21.3.4. 호스트 이름 추가하기
___21.3.5. 동일 출처 요청 보내기
___21.3.6. 교차 출처 요청 보내기
___21.3.7. 허용된 교차 출처 요청 보내기

 5부. Spring Security OAuth 2.0
_22 장. OAuth2.0 프레임워크와 OIDC
__22.1. OAuth 2.0 프레임워크
___22.1.1. OAuth 2.0 참여자
___22.1.2. OAuth 2.0 프로토콜 실행 흐름
__22.2. OpenID Connect
___22.2.1. OIDC 참여자
___22.2.2. ID 토큰
___22.2.3. scope
___22.2.4. OIDC 프로토콜 실행 흐름
_23 장. 스프링 시큐리티 OAuth2 로그인
__23.1. 애플리케이션 설정과 ClientRegistration 객체
___23.1.1. 애플리케이션 설정과 ClientRegistration 객체 매핑
___23.1.2. ClientRegistrationRepository 인스턴스
___23.1.3. ClientRegistration 객체
___23.1.4. 유명한 인가 제공자
__23.2. 인가 요청 리다이렉트 프로세스
___23.2.1. OAuth 2.0 프로토콜 인가 요청 리다이렉트 흐름
___23.2.2. 스프링 시큐리티 승인 허가 리다이렉트 참여 컴포넌트
__23.3. 권한 부여 승인 리다이렉트 프로세스
___23.3.1. OAuth 2.0 프로토콜 권한 부여 승인 리다이렉트 흐름
___23.3.2. 스프링 시큐리티 권한 부여 승인 리다이렉트 참여 컴포넌트
____23.3.2.1. OAuth2 로그인 인증 필터
____23.3.2.2. OAuth2 인증 제공자
____23.3.2.3. OIDC 인증 제공자
_24 장. SNS 로그인 구현하기
__24.1. 프로젝트 구성
__24.2. 클라이언트 등록
___24.2.1. 구글 클라이언트 등록
____24.2.1.1. 프로젝트 생성
____24.2.1.2. 클라이언트 애플리케이션 등록
____24.2.1.3. OAuth 동의 화면 구성
____24.2.2. 네이버 클라이언트 등록
__24.3. 클라이언트 정보 설정
__24.4. 시큐리티 필터 체인 구성
__24.5. OAuth 2.0 사용자 서비스
___24.5.1. 사용자 엔티티와 리포지토리
___24.5.2. 플랫폼별 OAuth 2.0 사용자 서비스
____24.5.2.1. 구글 OAuth 사용자 서비스
____24.5.2.2. 네이버 OAuth 사용자 서비스
___24.5.3. DemoAuthenticatedUser 레코드 클래스
___24.5.4. 다양한 플랫폼에 대한 확장성 고려하기
___24.5.5. MainController 클래스
__24.6. 홈 화면 구현
___24.6.1. application YAML 설정
___24.6.2. index HTML
___24.6.3. MainController 클래스
___24.6.4. 메인 화면
__24.7. OAuth2 로그아웃
___24.7.1. 커스텀 LogoutSuccessHandler 클래스
___24.7.2. 커스텀 LogoutSuccessHandler 컴포넌트 등록
___24.7.3. 구글 로그아웃 화면 확인
_25 장. 스프링 시큐리티 OAuth2 클라이언트
__25.1. 시큐리티 필터 체인과 oauth2Client 메서드
___25.1.1. 시큐리티 필터 체인의 차이
___25.1.2. 리다이렉트 실행 흐름의 차이
___25.1.3. OAuth2 클라이언트 커스터마이즈 컴포넌트 설정
__25.2. OAuth2AuthorizedClient 객체의 보관 및 활용
___25.2.1. OAuth2AuthorizedClient 객체
___25.2.2. OAuth2AuthorizedClientRepository 인스턴스
___25.2.3. @RegisteredOAuth2AuthorizedClient 애너테이션
__25.3. OAuth2AuthorizedClient 관리자
___25.3.1. OAuth2AuthorizedClient 관리자와 협력 컴포넌트들
___25.3.2. OAuth2AuthorizedClient 제공자
_26 장. OAuth2 클라이언트 구현하기
__26.1. KeyCloak 설치하기
___26.1.1. KeyCloak 다운로드
___26.1.2. KeyCloak 서버 실행
__26.2. KeyCloak 렐름 및 사용자 준비
___26.2.1. 렐름이란?
___26.2.2. 렐름 및 사용자 생성
__26.3. 클라이언트 애플리케이션 등록
__26.4. 프로젝트 구성
__26.5. 시큐리티 필터 체인 구성
__26.6. 폼 로그인 사용자 준비
__26.7. OAuth2AuthorizedClient 관리자 및 제공자 준비
___26.7.1. OAuth2AuthorizedClient 관리자 및 제공자
___26.7.2. 컨텍스트 속성 맵핑
___26.7.3. application YAML
__26.8. 홈 화면 만들기
___26.8.1. application YAML
___26.8.2. index HTML
___26.8.3. MainController 클래스
___26.8.4. 홈 화면
__26.9. 리소스 소유자 비밀번호 인가 구현하기
___26.9.1. 리소스 소유자 비밀번호 인가 폼
___26.9.2. 리소스 소유자 비밀번호 인가 엔드포인트
___26.9.3. 로그인 사용자 조회
___26.9.4. 키클록 사용자 저장 및 조회
___26.9.5. 키클록 인가 서버 권한 부여받기
___26.9.6. 에러 페이지
__26.10. 사용자 리스트 조회 구현하기
___26.10.1. 사용자 리스트 조회 스크립트
___26.10.2. 사용자 리스트 조회 엔드포인트
___26.10.3. 사용자 리스트 조회
___26.10.4. 키클록 사용자 권한 부여
__26.11. 토큰 재발급 구현하기
___26.11.1. 리프레시 토큰 인가 활성화
___26.11.2. 액세스 토큰 만료 시간 조정
___26.11.3. 액세스 토큰 재발급
___26.11.4. 사용자 조회 딜레이 설정
___26.11.5. 리프레시 토큰 재인가 확인

(※ 6부는 별도의 PDF 파일로 제공)
6 부. 스프링 시큐리티 테스트
_27 장. 스프링 시큐리티 테스트 지원
__27.1. 단위 테스트와 테스트 더블
___27.1.1. 단위 테스트
___27.1.2. 테스트 더블
___27.1.3. 테스트 더블의 종류
__27.2. 결합 테스트와 스프링 부트 테스트
___27.2.1. 결합 테스트
___27.2.2. 스프링 부트 테스트
__27.3. 메서드 기반 인가 지원
___27.3.1. @WithMockUser 애너테이션
___27.3.2. @WithAnonymousUser 애너테이션
___27.3.3. @WithUserDetails 애너테이션
___27.3.4. @WithSecurityContext 애너테이션
___27.3.5. 메타 애너테이션
__27.4. 스프링 MVC 테스트 지원 – 기본
___27.4.1. 테스트 사용자 지정하기
___27.4.2. CSRF 보호 지원
___27.4.3. 폼 로그인 지원
___27.4.4. HTTP 기본 인증 지원
___27.4.5. 로그아웃 지원
__27.5. 스프링 MVC 테스트 지원 - OAuth2
___27.5.1. OIDC 로그인 지원
___27.5.2. OAuth2 로그인 지원
___27.5.3. OAuth2 클라이언트 지원

찾아보기

저자 소개
현대적인 소프트웨어 아키텍처와 보안 해결책의 접점을 탐구하는 시니어 소프트웨어 엔지니어이자 애자일 컨설턴트다. 포스코DX(구 포스코ICT)에서 대규모 MES의 서버 개발 및 운영을 담당하며 실시간 무중단 가동 시스템의 안정성을 경험했다. 이후 스타트업 지뉴인의 개발 리드를 거쳐, 애자일 혁신의 중심지인 브로드컴의 탄주 랩스(구 피보탈 랩스)에서 소프트웨어 엔지니어 및 애자일 컨설턴트로 활동했다. 현재는 비카인드랩스코리아에서 시니어 소프트웨어 엔지니어로서 복잡한 비즈니스 요구사항을 애자일 방법론과 견고한 엔지니어링으로 풀어내는 데 집중하고 있다.

스프링 프레임워크 생태계에 대한 관심을 바탕으로, 수많은 실전 프로젝트에서 스프링 시큐리티를 활용한 보안 아키텍처를 설계하고 구축해 왔다. 프레임워크의 내부 동작 원리를 파고들어 컴포넌트를 확장하거나 고난도의 문제를 해결하는 과정을 블로그에 기록하며 지식을 공유하고 있다.

블로그: https://junhyunny.github.io/


출판사
리뷰

구조 + 원리 + 구현 실습 = 스프링 시큐리티 마스터

다양한 프로젝트를 경험한 저자의 경험과 지식, 인사이트를 기반으로 스프링 시큐리티의 핵심 원리를 파헤칩니다. 큰 그림을 살펴보고, 이어서 보다 자세한 구현 방식과 원리를 살펴보고, 마지막으로 코드 기반 구현 실습이 뒤따르는 구성을 통해 코드 단위까지 분해하여 습득합니다.

<1
부 스프링 시큐리티 소개>
스프링 시큐리티의 내부 구조와 원리를 이해하기 위한 기본적 내용을 알아보고 실습 준비를 합니다.

핵심 주제
서블릿 컨테이너

서블릿 필터 체인

시큐리티 필터 체인

인텔리제이 실습 환경

<2
부 인증>
서비스를 이용하고자 하는 사용자가 정말 그 대상이 맞는지 확인하는 작업을인증이라고 합니다. 스프링 시큐리티가 지원하는 다양한 인증 방식을 탐구해 봅니다.

핵심 주제
스프링 시큐리티 인증 아키텍처

폼 로그인 인증

•HTTP 기본 인증

리멤버-미 인증

익명 인증

인증 이벤트

<3
부 인가>
어떤 서비스를 이용하는 사용자의 신원을 확인하는 작업을 인증이라고 하면 인가는 인증된 사용자가 적합한 권한이나 역할을 가졌는지 확인하는 것입니다. 스프링 시큐리티가 지원하는 다양한 인가 작업을 탐구합니다.

핵심 주제
스프링 시큐리티 인가 아키텍처

•HTTP 요청 기반 인가

메서드 기반 인가

인가 이벤트

 

<4부 애플리케이션 보호>
인증, 인가 메커니즘만으로 애플리케이션이 안전해지는 것은 아닙니다. 스프링 시큐리티가 제공하는 웹 서비스 환경에서 일반적으로 사용하는 공격 방법들에 대한 보호 수단을 탐구합니다.

핵심 주제
사이트 간 요청 위조

교차 출처 리소스 공유

보안 HTTP 응답 헤더

<5
Spring Security OAuth 2.0>

먼저 OAuth 2.0 프레임워크와 OAuth 2.0 프레임워크를 기반으로 기능을 확장한 OIDC(OpenID Connect)를 살펴봅니다. 이후 스프링 시큐리티가 OAuth 2.0 인가 프로세스에 참여하는 컴포넌트인 클라이언트, 리소스 서버를 지원하기 위해 어떤 기능들을 제공하는지 하나씩 살펴봅니다.


핵심 주제
•OAuth 2.0
프레임워크와 OIDC

스프링 시큐리티 OAuth2 로그인

•SNS 로그인 구현하기

스프링 시큐리티 OAuth2 클라이언트

•OAuth2 클라이언트 구현하기

<6
부 스프링 시큐리티 테스트>
스프링 프레임워크는 개발자 경험을 향상하고 테스트 작성을 원활하게 만드는 도구를 제공한다. 테스트와 이를 지원하는 도구를 탐구하는 것으로 책을 마무리한다.


핵심 주제
•단위 테스트와 테스트 더블

•결합 테스트와 스프링 부트 테스트

•메서드 기반 인가 지원

•스프링 MVC 테스트 지원 - 기본

•스프링 MVC 테스트 지원 - OAuth2

책 보러 가기

- 예스24: https://www.yes24.com/product/goods/180391041

- 교보문고: https://product.kyobobook.co.kr/detail/S000219337580

- 알라딘: https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=387170626

관련글 더보기

댓글 영역