책 이미지

책 정보
· 분류 : 국내도서 > 컴퓨터/모바일 > OS/Networking > 네트워크 보안/해킹
· ISBN : 9791161752488
· 쪽수 : 624쪽
· 출판일 : 2019-01-29
책 소개
목차
1장. 취약한 애플리케이션의 구조
__보안 감사
____샘플 애플리케이션 소개
____JBCP 달력 애플리케이션의 구조
__애플리케이션 테크놀로지
____보안 감사 결과 리뷰
__인증
__권한 부여
____데이터베이스 내 인증 정보 보안
__요약
2장. 스프링 시큐리티 시작하기
__스프링 시큐리티 기본 설정
____샘플 애플리케이션 가져오기
____의존성 업데이트
____스프링 시큐리티 XML 설정 파일 구현
____web.xml 파일 업데이트
____안전한 애플리케이션 실행
____자주 발생하는 문제점
__약간의 기능 추가
____사용자 정의 로그인 페이지
__요약
3장. 사용자 정의 인증
__JBCP 달력의 구조
____CalendarUser 객체
____Event 객체
____CalendarService 인터페이스
____UserContext 인터페이스
____SpringSecurityUserContext 인터페이스
__SecurityContextHolder를 사용한 새로운 사용자 로그인
____스프링 시큐리티에서의 사용자 관리
____새로운 사용자로 로그인
____SignupController 업데이트
__사용자 정의 UserDetailsService 객체 생성
____CalendarUserDetailsService 클래스
____UserDetailsService 설정
____UserDetailsManager에 대한 참조 제거
____CalendarUserDetails 객체
____SpringSecurityUserContext 단순화
__사용자 정의 AuthenticationProvider 객체 생성
____CalendarUserAuthenticationProvider
____CalendarUserAuthenticationProvider 객체
____다른 매개변수를 이용한 인증
__인증 메서드 선택
__요약
4장. JDBC 기반 인증
__필수 의존성
__H2 데이터베이스 사용
____제공된 JDBC 스크립트
____H2 임베디드 데이터베이스 설정
____JDBC UserDetailsManager 구현체 설정
__스프링 시큐리티의 기본 사용자 스키마
____사용자 정의
____사용자 권한 정의
__UserDetailsManager 인터페이스
____그룹 기반 접근 제어 그룹 기반 접근 제어 설정
__사용자 정의 스키마 지원
____올바른 JDBC SQL 쿼리 판단
____로드된 SQL 스크립트 업데이트
____CalendarUser 권한 SQL
____사용자 정의 권한 삽입
____사용자 정의 SQL 쿼리 사용을 위한 JdbcUserDetailsManager 설정
__보안 패스워드 설정
__PasswordEncoder 메서드
____패스워드 인코딩 설정
____PasswordEncoder 메서드 설정
____스프링 시큐리티에 PasswordEncoder 메서드 적용
__스프링 시큐리티에 솔트 적용
____스프링 시큐리티 설정 업데이트
____기존 패스워드 마이그레이션
____DefaultCalendarUserService 업데이트
__솔트를 적용한 패스워드 사용
__요약
5장. 스프링 데이터를 이용한 인증
__스프링 데이터 JPA
____의존성 업데이트
____스프링 데이터 JPA 사용을 위한 JBCP 달력 업데이트
____데이터베이스 설정 재구성
____데이터베이스 초기화
__SQL에서 ORM으로 리팩토링
____JPA를 사용한 도메인 객체 매핑
____스프링 데이터 저장소
____데이터 액세스 객체
__애플리케이션 서비스
__UserDetailsService 객체
____RDBMS를 문서 데이터베이스로 리팩토링
__MongoDB를 사용한 문서 데이터베이스 구축
____의존성 업데이트
____MongoDB의 데이터베이스 설정 재구성
____MongoDB 데이터베이스 초기화
____MongoDB와 도메인 객체 매핑
____MongoDB의 데이터 액세스 객체
__요약
6장. LDAP 디렉터리 서비스
__LDAP 이해
____LDAP
____임베디드 LDAP 문제 해결
__스프링 LDAP 인증 방식 이해
____사용자 자격 증명 인증
____아파치 DS를 통한 인증 과정
__아파치 DS를 통한 역할 결정
____UserDetails의 추가 애트리뷰트 매핑
____고급 LDAP 설정
____LDAP 패스워드 인코딩과 저장
____패스워드 비교 인증의 단점
__UserDetailsContextMapper 객체 설정
____UserDetailsContextMapper의 암시적 설정
____사용자 추가 상세 정보 보기
LdapUserDetailsService 설정
__LdapUserDetailsService를 사용하기 위한 AccountController 업데이트
____외부 LDAP 서버와 스프링 시큐리티 연동
__명시적 LDAP 빈 설정
____외부 LDAP 서버 참조 설정
____LdapAuthenticationProvider 인터페이스 설정
____UserDetailsService에 대한 역할 검색 위임
__LDAP를 통한 마이크로소프트 AD 연동
____스프링 시큐리티 4.2의 AD 지원
__요약
7장. Remember-Me 서비스
__Remember-Me
____의존성
____토큰 기반 Remember-Me 기능
__MD5
____Remember-Me 시그니처
__Remember-Me의 안전성
____Remember-Me를 위한 권한 부여 규칙
__영구 토큰 기반 Remember-Me 설정
____영구 토큰 기반 Remember-Me 기능의 동작 원리
__JPA 기반 PersistentTokenRepository
____사용자 정의 Remember-Me 서비스
____만료된 Remember-Me 세션 정리
__Remember-Me 아키텍처
____Remember-Me와 사용자 라이프 사이클
____IP 주소를 통한 Remember-Me 기능 제한
__사용자 정의 쿠키 및 HTTP 매개변수명
__요약
8장. TLS를 사용한 클라이언트 인증서 인증
__클라이언트 인증서 인증의 동작 원리
____클라이언트 인증서 인증 인프라 설정
____웹 브라우저로 인증서 키 쌍 불러오기
____클라이언트 인증서 인증 문제 해결
____스프링 시큐리티에서 클라이언트 인증서 인증 설정
____security 네임스페이스를 사용한 클라이언트 인증서 인증 설정
__스프링 빈을 사용한 클라이언트 인증서 설정
____빈 기반 설정의 추가 기능
____클라이언트 인증서 인증 구현 시 고려 사항
__요약
9장. OAuth 2 적용하기
__OAuth 2의 가능성
____OAuth 2 애플리케이션 가입
____스프링 시큐리티에서 OAuth 인증 활성화
____추가 필수 의존성
__스프링 시큐리티에서의 OAuth 2 구성
____로컬 UserConnectionRepository
____프로바이더 정보에 대한 로컬 데이터베이스 엔트리 생성
____사용자 정의 UserConnectionRepository 인터페이스
____ConnectionSignup의 흐름
__OAuth 2 프로바이더 연결
____OAuth 2 사용자 추가
____OAuth 2 컨트롤러 로그인 절차
__추가 OAuth 2 프로바이더
____OAuth 2 사용자 등록 문제
____비표준 OAuth 2 프로바이더 등록
__OAuth 2의 안전성
__요약
10장. CAS를 활용한 SSO
__CAS 소개
__고수준 CAS 인증 흐름
__스프링 시큐리티와 CAS
____의존성
____CAS 설치와 설정
__CAS 기본 연동 설정
____CAS ServiceProperties 객체 생성
____CasAuthenticationEntryPoint 객체 추가
____CAS 티켓 검증 사용CasAuthenticationProvider 객체를 이용한 진위성 증명
__단일 로그아웃
____단일 로그아웃 설정
__클러스터 환경
____Stateless 서비스에 대한 프록시 티켓 인증
____프록시 티켓 인증 설정
__프록시 티켓 사용
____프록시 티켓 인증
__CAS 서버 사용자 정의
____CAS WAR 오버레이
____CAS 내부 인증 작동 방식
____임베디드 LDAP 서버와 CAS 연결 설정
__CAS 단언으로부터 UserDetails 객체 생성
____CAS 응답에 LDAP 애트리뷰트 반환
____LDAP 애트리뷰트와 CAS 애트리뷰트 매핑
____사용자 정의 애트리뷰트에 접근하기 위한 CAS 서비스 권한 부여
____CAS로부터 UserDetails 획득
____GrantedAuthorityFromAssertionAttributesUser 객체
____SAML 1.1을 사용한 또 다른 티켓 인증
____애트리뷰트 조회의 유용성
__추가 CAS 기능
__요약
11장. 미세 접근 제어
__그레이들 의존성
____스프링 표현 언어 통합
__Thymeleaf 스프링 시큐리티 태그 라이브러리를 활용한 조건부 렌더링
____URL 접근 규칙을 기반으로 한 조건부 렌더링
____SpEL을 활용한 조건부 렌더링
____컨트롤러 로직을 사용한 조건부 컨텐츠 렌더링
____WebInvocationPrivilegeEvaluator 클래스
____페이지 내 권한 부여를 설정하는 최적의 방법
____메서드 레벨 보안
____다중 보안의 필요성
__인터페이스 기반 프록시
__JSR-250 호환 표준 규칙
____스프링의 @Secured 어노테이션을 사용한 메서드 보안
____메서드 매개변수를 포함하는 메서드 보안 규칙
____반환된 값을 통합하는 메서드 보안 규칙
____역할 기반 필터링을 통한 메서드 데이터 보호
____@PreFilter를 사용한 컬렉션 사전 필터링
____메서드 권한 부여 타입 비교
____어노테이션 기반 보안을 위한 고려 사항
__요약
12장. 접근 제어 목록
__ACL 개념 모듈
__스프링 시큐리티에서의 ACL
__스프링 시큐리티 ACL 지원을 위한 기본 설정
____그레이들 의존성
____예제 시나리오 설정
____H2 데이터베이스에 ACL 테이블 추가
____SecurityExpressionHandler 설정
____AclPermissionCacheOptimizer 객체
____간단한 ACL 엔트리 생성
____고급 ACL 주제
____사용자 정의 ACL 퍼미션 선언
____ACL 퍼미션 평가 활성화
____수정 가능 ACL과 권한 부여
____일반적인 ACL 적용 시 고려 사항
____스프링 시큐리티 ACL의 필요성
__요약
13장. 사용자 정의 권한 부여
__요청에 대한 권한 부여
____접근 결정의 취합 방식 설정
____UnanimousBased 접근 결정 관리자 설정
____요청에 대한 표현식 기반 권한 부여
__URL에 대한 접근 제어의 동적 정의
____RequestConfigMappingService 설정
____사용자 정의 SecurityMetadataSource 구현
____사용자 정의 SecurityMetadataSource 등록
____antMatchers() 메서드 제거
__사용자 정의 표현식 생성
____사용자 정의 SecurityExpressionRoot 설정
____사용자 정의 SecurityExpressionHandler 설정
____CustomWebSecurityExpressionHandler 설정과 사용
____CustomWebSecurityExpressionHandler에 대한 대안
__요약
14장. 세션 관리
__세션 고정 보호 설정.
____세션 고정 공격에 대한 이해
____스프링 시큐리티를 사용한 세션 고정 공격 방어
____세션 고정 공격 시뮬레이션
____세션 고정 보호 옵션 비교
__사용자 당 동시 세션 수 제한
____동시 세션 제어 설정
__ㅍ동시 세션 제어 테스트
__만료 세션 리다이렉트 설정.
__동시성 제어의 일반적인 문제점
____강제 로그아웃 대신 인증 방지 설정
__동시 세션 제어의 장점
__사용자의 활성화된 세션 표시
____스프링 시큐리티가 HttpSession 메서드를 사용하는 방법
____HttpSessionSecurityContextRepository 인터페이스
____스프링 시큐리티에 HttpSession를 사용하도록 설정
____스프링 시큐리티의 DebugFilter를 이용한 디버깅
__요약
15장. 스프링 시큐리티의 추가 기능
__보안 취약점
__크로스 사이트 스크립팅
__사이트 간 요청 변조
____동기화 토큰
____CSRF 보호 사용 시점
____기본 CSRF 지원
____CSRF 보호 구현 시 주의사항
__보안 HTTP 응답 헤더
____기본 보안 헤더
____사용자 정의 헤더
__요약
16장. 스프링 시큐리티 4.2 마이그레이션
__소개
__샘플 마이그레이션
____스프링 시큐리티 4.2의 향상된 기능
____스프링 시큐리티 4.x의 기타 변경 사항
____스프링 시큐리티 4의 설정 변경
__삭제된 기능
____spring-security-core 삭제
____spring-security-web 삭제
____기본 필터 URL 마이그레이션
____JAAS
__요약
17장. OAuth 2 및 JSON 웹 토큰을 이용한 마이크로서비스 보안
__마이크로서비스의 개념
____단일체.
____마이크로서비스
__서비스 기반 아키텍처
__마이크로서비스 보안
____서비스 통신
____결합성
____기술적 복잡성
__OAuth 2 사양
____액세스 토큰
____권한 부여 방식
__JSON 웹 토큰(JWT)
____토큰 구조
__스프링 시큐리티에서의 OAuth 2 지원
____자원 소유자
____자원 서버
____권한 부여 서버
____RSA JWT 액세스 토큰 변환기 keypair
____OAuth 2 resource 속성 설정
____OAuth 2 Client 속성 설정
____JWT 액세스 토큰 변환기
____UserDetailsService 객체
____OAuth 2 서버 애플리케이션 실행
__마이크로서비스 클라이언트
____OAuth 2 클라이언트 설정
__요약
__JBCP 달력 샘플 코드 시작
부록. 참고 자료
__그레이들 빌드툴
__그레이들 IDE 플러그인
__새로운 작업 공간 생성
__샘플 코드의 구조
__샘플 코드 가져오기
__샘플 코드 실행
__톰캣 HTTPS 설정
__보충 자료