해외주문/바로드림/제휴사주문/업체배송건의 경우 1+1 증정상품이 발송되지 않습니다.
패키지
북카드
키워드 Pick
키워드 Pick 안내
관심 키워드를 주제로 다른 연관 도서를 다양하게 찾아 볼 수 있는 서비스로, 클릭 시 관심 키워드를 주제로 한 다양한 책으로 이동할 수 있습니다.
키워드는 최근 많이 찾는 순으로 정렬됩니다.
작가정보
저자(글) 피터 뮬라리엔
저자 피터 뮬라리엔(Peter Mularien)은 현재 중급 규모의 엔터프라이즈 소프트웨어 벤더의 설계자이자 수석 개발자이다. 피터 뮬라리엔은 웹 기반 애플리케이션 개발에 종사했으며 다양한 분야의 기술 관련 컨설턴트로 일하면서 10년 이상 주요 기업과 소형 기업들에 컨설팅을 제공했다. 자바와 스프링에 대해서 다루고 있는 그의 블로그인 "It’s Only Software"는 복잡한 기술들에 대해 개발자들이 쉽게 이해할 수 있는 내용과 튜토리얼로 인해 많은 인기를 얻고 있다. 피터는 스프링 커뮤니티 포럼의 유명 패널 중 한 명이며 전체 포스팅을 올린 사람들 중 상위 30위 안에 올라 있다.
밤 늦은 시간과 주말에도 함께 시간을 보내지 못해 미안한 나의 아내와 아이들에게 사랑과 감사의 인사를 전한다.
번역 유윤선
역자 유윤선은 IT 프리랜서 번역가로 활동하고 있다. 역서로는 『어도비 AIR 인 액션』, 『액션스크립트 3.0 완벽 가이드』, 『시작하세요! 아이패드 프로그래밍』이 있으며, 현재 플래시, 자바, 모바일 프로그래밍 등 다양한 분야에 관심을 가지고 번역을 하고 있다.
목차
- 01장 보안에 취약한 애플리케이션의 해부
보안 감사
예제 애플리케이션 소개
- JBCP 애완동물 상점 애플리케이션의 아키텍처
- 애플리케이션 개발도구
보안 감사 결과 검토
- 인증
- 권한부여
- 데이터베이스 크리덴셜 보안
- 민감한 정보
- 전송 레벨 보안
보안 문제 해결을 위한 스프링 시큐리티 3 사용
- 왜 스프링 시큐리티인가?
요약
02장 스프링 시큐리티 시작하기
핵심 보안 개념
- 인증
- 권한부여
간단한 절차를 통해 애플리케이션에 보안 적용하기
- 스프링 시큐리티 XML 설정 파일 구현하기
- web.xml 파일에 스프링 DelegatingFilterProxy 추가하기
- web.xml 파일에 스프링 시큐리티 XML 파일 레퍼런스 추가하기
- 부족한 부분들에 대한 고려사항!
보안은 복잡한 주제다?보호된 웹 요청의 아키텍처
- 요청은 어떻게 처리될까?
- auto-config가 내부적으로 하는 작업들
- 사용자들은 어떻게 인증받을까?
- 요청은 어떻게 권한부여를 받을까?
요약
03장 사용자 경험 개선
로그인 페이지 커스터마이징하기
- 커스텀 로그인 페이지 구현하기
로그아웃 기능 이해하기
- 사이트 헤더에 Log Out 링크 추가하기
- 로그아웃 동작 원리
remember me
- remember me 옵션 구현하기
- remember me 기능의 동작원리
- remember me 기능은 과연 안전할까?
비밀번호 수정 기능 구현하기
- 패스워드 변경 기능을 지원하도록 인 메모리 크리덴셜 스토어
- 확장하기
요약
04장 크리덴셜 안전하게 저장하기
스프링 시큐리티에서 데이터베이스를 사용한 인증 적용하기
- 데이터베이스 인증 스토어 설정하기
- 데이터베이스 기반 인증의 동작 원리
- 커스텀 JDBC UserDetailsService 구현하기
- 기본으로 제공되는 JDBC 기반 사용자 관리
JdbcDaoImpl에 대한 고급 설정
- 그룹 기반 권한부여 설정하기
- 데이터베이스 인증 시 레거시 또는 커스텀 스키마 사용하기
보안 패스워드 설정하기
- 패스워드 인코딩 설정하기
- 패스워드에 소금을 조금 치는 것은 어떨까?
솔트 패스워드 설정하기
- 패스워드 변경 기능 개선하기
- 커스텀 솔트 소스 설정하기
remember me 기능을 데이터베이스로 이전하기
- 데이터베이스에 상주하는 remember me 토큰 설정하기
- 데이터베이스에 저장된 토큰은 더 안전할까?
SSL을 사용한 사이트 보안
- SSL 사용을 위해 아파치 톰캣 설정하기
- 자동으로 사이트 영역 보호하기
요약
05장 미세 접근 제어
애플리케이션 기능과 보안에 대해 다시 생각하기
- 애플리케이션 보안에 대한 기획
- 사용자 역할 기획
- 페이지 레벨 보안 기획하기
다양한 미세 권한부여 방법
- 스프링 시큐리티의 태그 라이브러리를 사용해 조건에 따라 콘텐츠
- 렌더링하기
- 컨트롤러 로직을 사용해 조건적으로 콘텐츠 렌더링하기
- 페이지 내 권한부여를 설정하는 가장 좋은 방법은 무엇일까?
비즈니스 티어 보호하기
- 비즈니스 메서드 보안의 기본
- 메서드 보안의 여러가지 방식
- 메서드 보안의 동작 원리
고급 메서드 보안
- 빈 데코레이터를 사용한 메서드 보안 규칙
- 메서드 파라미터를 포함하는 메서드 보안 규칙
- 메서드 파라미터 바인딩의 동작 원리
역할 기반 필터링을 통해 메서드 데이터 보호하기
- 메서드 보안에 대한 합리적인 경고
요약
06장 고급 설정과 확장
커스텀 보안 필터 작성하기
- 서블릿 필터 레벨에서의 IP 필터링
커스텀 AuthenticationProvider 작성하기
- AuthenticationProvider를 사용해 간단한 싱글 사인 온 구현하기
- 여러 AuthenticationProvider 결합하기
- 요청 헤더를 사용해 싱글 사인 온 시뮬레이션하기
- 커스텀 AuthenticationProvider의 사용 시점에 대한 고려사항
세션 관리와 동시성
- 세션 고정 보호 설정하기
- 동시 세션 제어를 통해 사용자 보안 강화하기
- 동시 세션 제어의 다른 장점들
예외 처리 이해하고 설정하기
- 접근 거부 처리 설정하기
- AccessDeniedException을 일으키는 원인
- AuthenticationEntryPoint의 중요성
수동으로 스프링 시큐리티 인프라스트럭처 빈 설정하기
- Spring Security 빈 의존관계의 전체적인 설명
- 웹 애플리케이션 재설정하기
- 최소 스프링 시큐리티 환경 설정하기
고급 스프링 시큐리티 빈 기반 설정
- 세션 라이프사이클과 연관된 요소들 조정하기
- 다른 서비스들에 대한 수동 설정
- SpEL 표현식 핸들러와 Voter를 사용한 명시적 설정
- 메서드 보안에 대한 빈 기반 설정
- 명시적인 설정 마무리하기
- 어떤 방식의 설정을 택해야 할까?
인증 이벤트 처리
- 인증 이벤트 리스너 설정하기
- 수많은 애플리케이션 이벤트들
SpEL 표현식 핸들러의 커스텀 구현체 개발하기
요약
07장 접근 제어 목록
비즈니스 객체 보안에 접근 제어 목록 사용하기
- 스프링 시큐리티에서의 접근 제어 목록
스프링 시큐리티 ACL 지원 기능을 위한 기본 설정
- 간단한 대상 시나리오 가정하기
- HSQL 데이터베이스에 ACL 테이블 추가하기
- 접근 결정 관리자 설정하기
- ACL 지원 빈 설정하기
- 간단한 ACL 엔트리 생성하기
고급 ACL 주제들
- 퍼미션의 동작 원리
- 커스텀 ACL 퍼미션 선언
- 스프링 시큐리티 JSP 태그 라이브러리를 사용해 JSP에서
- ACL 활성화하기
- ACL을 지원하는 스프링 표현식 언어
- 뮤터블 ACL과 권한부여
- Ehcache ACL 캐싱
일반적인 ACL 디플로이에 대한 고려
- ACL 규모의 확장성과 성능 모델링
- 커스텀 개발에 들어가는 비용을 간과하지 말자
- 스프링 시큐리티 ACL을 꼭 사용해야 할까?
요약
08장 OpenID에 대한 개방
OpenID라는 약속의 땅
- OpenID 가입
스프링 시큐리티에서의 OpenID 인증 사용
- OpenID 로그인 폼 작성
- 스프링 시큐리티에서의 OpenID 지원 기능 설정
- OpenID 사용자 추가하기
OpenID 사용자 등록 문제
- OpenID 식별자가 해석되는 과정
- OpenID를 이용한 사용자 등록 구현
어트리뷰트 교환
- 스프링 시큐리티 OpenID에서의 AX 사용
- 현실에서의 AX 지원과 제약
- 구글 OpenID 지원
OpenID는 안전할까?
요약
09장 LDAP 디렉터리 서비스
LDAP 이해
- LDAP
- 일반 LDAP 어트리뷰트 이름
- 임베디드 LDAP 서버 실행
기본 LDAP 연동 설정
- LDAP 서버 레퍼런스 설정하기
- LDAP AuthenticationProvider 사용
- 임베디드 LDAP 문제 해결
스프링 LDAP 인증 방식 이해
- 사용자 크리덴셜 인증
- 사용자 역할 멤버십 판단
- UserDetails의 추가 어트리뷰트 매핑
고급 LDAP 설정
- 예제 JBCP LDAP 사용자
- 비밀번호 비교 vs. 바인딩 인증
- UserDetailsContextMapper 설정
- 또 다른 password 어트리뷰트 사용
- LDAP을 UserDetailsService로 사용
외부 LDAP 서버와의 연동
명시적 LDAP 빈 설정
- 외부 LDAP 서버 레퍼런스 설정
- LdapAuthenticationProvider 설정
- LDAP을 통한 마이크로소프트 액티브 디렉터리와의 연동
- UserDetailsService에 역할 검색 위임
요약
10장 CAS를 활용한 싱글 사인 온
CAS 소개
- 고수준 CAS 인증 흐름
- 스프링 시큐리티와 CAS
- CAS 설치와 설정
기본 CAS 연동 설정
- CasAuthenticationEntryPoint 추가
- CAS 티켓 검증 사용
- CasAuthenticationProvider를 활용한 진위성 증명
고급 CAS 설정
- CAS 단언으로부터의 어트리뷰트 조회
- 어트리뷰트 조회가 왜 유용할까?
- 추가적인 CAS의 기능들
요약
11장 클라이언트 인증서 인증
클라이언트 인증서 인증의 동작 원리
클라이언트 인증서 인증 인프라스트럭처 설정
- 공개 키 인프라스트럭처의 용도 이해
- 클라이언트 인증서 키 쌍 생성하기
- 톰캣 트러스트 스토어 설정
- 브라우저로 인증서 키 쌍 불러오기
- 테스트 마무리
- 클라이언트 인증서 인증 문제 해결
스프링 시큐리티에서의 클라이언트 인증서 인증 설정
- security 네임스페이스를 사용한 클라이언트 인증서 인증 설정
- 스프링 시큐리티가 인증서 정보를 사용하는 원리
- 스프링 시큐리티 인증서 인증의 동작 원리
- 나머지 부족한 부분들
- 듀얼 모드 인증 지원
스프링 빈을 사용한 클라이언트 인증서 설정
- 빈 기반 설정의 추가 기능
클라이언트 인증서 인증 구현 시 고려 사항-
요약
12장 스프링 시큐리티 확장 프로젝트
스프링 시큐리티 확장 프로젝트
커베로스와 SPNEGO 인증에 대한 기초 지식
스프링 시큐리티에서의 커베로스 인증
- 전체적인 커베로스 스프링 시큐리티 인증 흐름
- 준비 작업
- 커베로스 관련 스프링 빈 설정
- SPNEGO 빈을 security 네임스페이스에 연결하기
- 애플리케이션 서버 장비를 커베로스 영역에 추가
- 파이어폭스 사용자들에 대한 고려 사항
- 문제 해결
커베로스와의 연동을 위한 LDAP UserDetailsService 설정
커베로스와 함께 폼 로그인 사용하기-
요약
13장 스프링 시큐리티 3으로 마이그레이션하기
스프링 시큐리티 2에서 마이그레이션하기
스프링 시큐리티 3의 개선 사항
스프링 시큐리티 3에서의 설정 변화
- AuthenticationManager 설정 수정
- 세션 관리 옵션을 위한 새로운 설정 구문
- 커스텀 필터 설정에 대한 변경사항
- CustomAfterInvocationProvider에 대한 변경 사항
- 그 밖의 설정 변경 사항
패키지와 클래스 관련 변경 사항
요약
부록 추가 참고 자료
JBCP Pets 예제 코드 시작하기
사용 가능한 애플리케이션 이벤트
스프링 시큐리티 가상 URL
메서드 보안을 위한 명시적인 빈 설정
논리적인 필터명의 마이그레이션 참고 사항
책 속으로
이 책은 웹 보안에 대해 고민하는 모든 사람들에게 추천하는 책이다. 저자인 피터 뮬라리엔은 스프링 프레임워크 포럼에서 고정 패널로 활동하고 있으며 오랜 시간 동안 많은 개발자들이 올린 질문에 답하고 의견을 나누었고 개발자들이 정말 궁금한 게 뭔지 알고 있는 뛰어난 개발자다. 저자는 이 책을 읽는 독자들이 스프링 시큐리티를 최대한 쉽게 이해하게끔 각종 다이어그램을 사용해 전체적인 흐름을 보여주고 한 주제를 한 번에 하나씩 찬찬히 설명한다. 저자의 오랜 경험에서 나온 혜안은 스프링 시큐리티를 공부할 때 독자들이 피부로 느끼는 궁금증을 해소하기에 부족함이 없으며 저자가 중간 중간 주는 팁은 보안 담당 개발자라면 항상 염두에 둬야 할 내용으로 가득 차 있다.
이 책은 크게 스프링 시큐리티 프레임워크의 기본 지식을 다루는 전반부(1~7장), 외부 시스템 연동을 다루는 후반부(8~12장), 마이그레이션을 다루는 13장으로 구성된다. 이 책은 레시피 형태의 책은 아니고 처음부터 하나씩 내용을 익히다 보면 어느새 기본 지식을 튼튼히 다질 수 있게 해주는 책이다.
역자는 스프링 시큐리티를 이루는 두 축인 인증(authentication)과 권한부여(authorization)에 대한 설명이 이 책의 핵심이라고 생각한다. 우선 이 두 가지에 대한 설명을 이해하고 나면 이후의 설명은 이러한 인증, 권한부여를 어디까지 미세하게 적용하고, 어느 부분과 연동할 것인가에 관한 상세 설명으로 볼 수 있다. 역자는 이 책의 인증과 권한부여에 대한 도입부 설명이 마치 아리아드네의 실(Ariadne’s thread)과 같다고 느꼈다. 그리스 로마 신화에서 테세우스가 미노타우로스의 미로에서 아리아드네의 실을 붙잡고 미로를 무사히 빠져나올 수 있었던 것처럼 독자들도 인증과 권한부여에 대한 두 주요 주제에 대한 이 책의 설명을 이해하기만 하면 아무리 복잡한 권한 적용도 스프링 시큐리티를 통해 손쉽게 할 수 있을 거라 확신한다.
스프링 시큐리티는 말 그대로 스프링 기반의 보안 프레임워크다. 이 책에서는 스프링에 대한 기본 지식을 전제하지만 스프링에 대한 최소한의 지식(주로 스프링 웹 MVC)을 갖춘 자바 개발자라면 누구든지 이 책을 볼 수 있다. 스프링 시큐리티는 스프링의 CoC 원칙을 그대로 계승한 프레임워크다. 복잡한 설정이 싫은 개발자라면 관례를 따라 개발하면 되고, 프로젝트에서 복잡한 보안 규칙을 적용해야 한다면 단계적인 보안 선언을 통해 원하는 수준의 보안을 적용할 수 있다. CoC 원칙으로 인해 초기 기본 설정에 대한 진입 장벽은 매우 낮으며 이후 프로젝트와 관련한 보안 규칙을 원하는 대로 커스터마이징하거나 오버라이드할 수 있다. 이 책이 웹 보안으로 고민하는 많은 분들에게 아리아드네의 실 같은 책이 되기를 바란다.
- 역자 서문 중에서
출판사 서평
스프링 시큐리티 3는 스프링 시큐리티 프레임워크에 대해 전면을 할애해 설명한 최초의 기술 서적이다. 이 책은 크게 두 부분으로 구성된다. 전반부에서는 보안에 대한 기본 개념을 시작으로 인증, 권한부여, 미세 접근 제어, ACL 모듈 등 스프링 시큐리티 프레임워크와 관련한 주제에 대해 하나씩 설명하고 후반부에서는 OpenID, CAS, LDAP 등 외부 시스템과의 연동을 다룬다.
이 책에서는 보안에 대한 기본 설명을 시작으로 스프링 시큐리티의 설정을 살펴보고 이어서 간단한 JSP 웹사이트를 사용해 단계적으로 스프링 시큐리티의 보안 요소를 사이트에 적용하는 법을 설명한다. 이 책을 읽고 나면 스프링 시큐리티를 활용해 보안 취약점에 대처하는 웹 보안 기능을 구현할 수 있음은 물론 CAS, 커베로스, LDAP 등과도 손쉽게 연동할 수 있다.
보안은 모든 애플리케이션의 핵심적인 부분 중 하나다. 보안에 취약한 애플리케이션은 해커의 좋은 표적이 된다. 이 책에서는 이미 충분히 검증된 스프링 시큐리티를 이용해 자바 개발자들이 웹 애플리케이션에 대한 해커의 공격을 막고 애플리케이션의 중요 자원을 보호하기 위한 완벽한 지침을 제시한다.
이 책은 스프링 시큐리티 3에 대한 상세 가이드 서적이다. 이 책에서는 실제 비즈니스 시나리오를 토대로 가장 최근에 일어나고 있는 보안 위협에 대처하는 법을 배우게 될 것이다. 아울러 LDAP, OpenID, CAS, 커베로스, 액티브 디렉터리와 같은 외부 시스템과 스프링 시큐리티를 연동하는 법도 배우게 될 것이다.
이 책에서는 보안 개념을 소개한 후 스프링 시큐리티 3를 설치하고 설정하는 것으로 시작한다. 그런 다음 JSP 기반 웹 애플리케이션을 토대로 간단한 e-커머스 웹사이트를 구현한다. 실제 비즈니스 시나리오를 토대로 예제를 진행하므로 스프링 시큐리티 3의 다양한 기능들을 경험하다 보면 어느새 스프링 시큐리티 3를 실무에 적용할 기반이 마련될 것이다.
후반부에서는 여러분이 자주 마주치게 될 법한 통합 시나리오를 다룬다. 여기서는 특정 시스템과의 연동과 관련한 복잡한 문제들을 해결하는 법을 배울 것이다. 마지막으로 기존 스프링 시큐리티 2 사용자를 위해 스프링 시큐리티 2에서 3로 마이그레이션하는 내용으로 마무리한다.
아울러 이 책에서 제시하는 실질적인 가이드와 현실적이고 손쉬운 예제는 웹 애플리케이션을 보호하는 데 스프링 시큐리티 3를 활용하고자 하는 이들에게 많은 도움이 될 것이다.
예상 독자
이 책은 웹 애플리케이션을 개발하는 자바 개발자들을 위한 책이다. 이 책의 독자는 자바, XML, 스프링 프레임워크에 익숙하다고 가정한다. 스프링 시큐리티를 처음 접하는 개발자라도 이 책을 충분히 활용할 수 있다.
이 책에서 다루는 내용
● 보안에 취약한 애플리케이션의 설계 결함 인식
● 기본 권한부여 및 크리덴셜 저장 기능 구현
● 스프링 시큐리티 2에서 스프링 시큐리티 3로 자연스럽게 마이그레이션
● LDAP, Active Directory, NTLM과 같은 엔터프라이즈 서비스와의 연동
● 확장 및 커스터마이징을 통한 스프링 시큐리티 3의 활용
● 인하우스 애플리케이션 및 인기 있는 자바 프레임워크와의 연동
● 애플리케이션의 인증 및 권한부여에 가장 적합한 설정 적용
기본정보
ISBN | 9788992939645 | ||
---|---|---|---|
발행(출시)일자 | 2010년 12월 17일 | ||
쪽수 | 424쪽 | ||
크기 |
188 * 240
mm
|
||
총권수 | 1권 | ||
시리즈명 |
위키북스 오픈소스 웹 시리즈
|
||
원서명/저자명 | Spring security 3/Mularien, Peter |
Klover
e교환권은 적립 일로부터 180일 동안 사용 가능합니다.
리워드는 작성 후 다음 날 제공되며, 발송 전 작성 시 발송 완료 후 익일 제공됩니다.
리워드는 리뷰 종류별로 구매한 아이디당 한 상품에 최초 1회 작성 건들에 대해서만 제공됩니다.
판매가 1,000원 미만 도서의 경우 리워드 지급 대상에서 제외됩니다.
일부 타인의 권리를 침해하거나 불편을 끼치는 것을 방지하기 위해 아래에 해당하는 Klover 리뷰는 별도의 통보 없이 삭제될 수 있습니다.
- 도서나 타인에 대해 근거 없이 비방을 하거나 타인의 명예를 훼손할 수 있는 리뷰
- 도서와 무관한 내용의 리뷰
- 인신공격이나 욕설, 비속어, 혐오발언이 개재된 리뷰
- 의성어나 의태어 등 내용의 의미가 없는 리뷰
리뷰는 1인이 중복으로 작성하실 수는 있지만, 평점계산은 가장 최근에 남긴 1건의 리뷰만 반영됩니다.
구매 후 리뷰 작성 시, e교환권 200원 적립
문장수집
e교환권은 적립 일로부터 180일 동안 사용 가능합니다. 리워드는 작성 후 다음 날 제공되며, 발송 전 작성 시 발송 완료 후 익일 제공됩니다.
리워드는 한 상품에 최초 1회만 제공됩니다.
주문취소/반품/절판/품절 시 리워드 대상에서 제외됩니다.
구매 후 리뷰 작성 시, e교환권 100원 적립