OAuth 2 in Action
도서명:OAuth 2 in Action
저자/출판사:저스틴,리처,안토니오,산소/에이콘출판
쪽수:484쪽
출판일:2018-04-17
ISBN:9791161751450
목차
1부. 첫 번째 단계
1장. OAuth 2.0이 무엇이고, 왜 관심을 가져야 할까?
__1.1 OAuth 2.0은 무엇인가?
__1.2 과거: 자격 증명 공유(그리고 자격 증명 탈취) __1.3 접근 권한 위임
____1.3.1 HTTP Basic과 비밀번호 공유 방식을 넘어 ____1.3.2 권한 위임: 중요성과 사용 방법
____1.3.3 사용자 주도 보안과 사용자 선택
__1.4 OAuth 2.0: 좋은 점과 나쁜 점
__1.5 OAuth 2.0이 아닌 것
__1.6 요약
2장. OAuth 2.0의 기본
__2.1 OAuth 2.0 프로토콜의 개요: 토큰 획득과 사용
__2.2 OAuth 2.0 인가 그랜트
__2.3 OAuth의 구성원: 클라이언트, 인가 서버, 리소스 소유자 그리고 보호된 리소스
__2.4 OAuth의 구성 요소: 토큰, 범위 그리고 인가 그랜트
____2.4.1 액세스 토큰
____2.4.2 범위
____2.4.3 리프레시 토큰
____2.4.4 인가 그랜트
__2.5 OAuth의 구성원과 구성 요소 간의 상호 작용: 백 채널, 프런트 채널 그리고 엔드 포인트
____2.5.1 백 채널 통신
____2.5.2 프런트 채널 통신
__2.6 요약
2부. OAuth 2 환경 구축
3장. 간단한 OAuth 클라이언트
__3.1 인가 서버에 OAuth 클라이언트 등록
__3.2 인가 코드 그랜트 타입을 이용해 토큰 얻기
____3.2.1 인가 요청 보내기
____3.2.2 인가 요청에 대한 응답 처리
____3.2.3 크로스 사이트 공격을 방지하기 위한 state 파라미터 추가
__3.3 보호된 리소스에 접근하기 위한 토큰 사용 __3.4 액세스 토큰 갱신
__3.5 요약
4장. 간단한 OAuth 리소스 서버
__4.1 HTTP 요청에서 OAuth 토큰 파싱
__4.2 액세스 토큰의 유효성 확인
__4.3 토큰에 기반한 콘텐츠 제공
____4.3.1 권한 범위에 따른 작업
____4.3.2 권한 범위에 따른 데이터 반환
____4.3.3 사용자에 따른 데이터 반환
____4.3.4 추가 접근 통제
__4.4 요약
5장. 간단한 OAuth 인가 서버
__5.1 OAuth 클라이언트 등록 관리
__5.2 클라이언트 인가
____5.2.1 인가 엔드 포인트
____5.2.2 클라이언트 인가
__5.3 토큰 발급
____5.3.1 클라이언트 인증
____5.3.2 인가 그랜트 요청 처리
__5.4 리프레시 토큰 지원
__5.5 권한 범위 지원
__5.6 요약
6장. 현실 세계의 OAuth 2.0
__6.1 인가 그랜트 타입
____6.1.1 암시적 그랜트 타입
____6.1.2 클라이언트 자격 증명 그랜트 타입
____6.1.3 리소스 소유자 자격 증명 그랜트 타입 ____6.1.4 어설션 그랜트 타입
____6.1.5 올바른 그랜트 타입 선택 __6.2 클라이언트 배포 ____6.2.1 웹 애플리케이션
____6.2.2 웹 브라우저 애플리케이션 ____6.2.3 네이티브 애플리케이션 ____6.2.4 클라이언트 시크릿 관리
__6.3 요약
3부. OAuth 2.0 구현과 보****취약점
7장. 일반적인 클라이언트 보****취약점
__7.1 일반적인 클라이언트 보****__7.2 클라이언트에 대한 CSRF 공격 __7.3 클라이언트 자격 증명 탈취
__7.4 리다이렉트 URI 등록 ____7.4.1 레퍼러를 통한 인가 코드 탈취 ____7.4.2 오픈 리다이렉터를 통한 토큰 탈취
__7.5 인가 코드 탈취 __7.6 토큰 탈취 __7.7 네이티브 애플리케이션 모범 사례 __7.8 요약
8장. 일반적인 보호된 리소스 보****취약점
__8.1 보호된 리소스의 보****취약점 __8.2 보호된 리소스의 엔드 포인트 설계
____8.2.1 리소스 엔드 포인트를 보호하는 방법 ____8.2.2 암시적 그랜트 지원 추가
__8.3 토큰 재전송 __8.4 요약
9장. 일반적인 인가 서버 보****취약점
__9.1 일반적인 보****__9.2 세션 가로채기 __9.3 리다이렉트 URI 조작
__9.4 클라이언트 가장 impersonation __9.5 픈 리다이렉터 __9.6 요약
10장. 일반적인 OAuth 토큰 보****취약점
__10.1 Bearer 토큰 __10.2 Bearer 토큰 사용에 있어서의 위험과 고려 사항 __10.3 토큰 보호 방법
____10.3.1 클라이언트에서 탈취 ____10.3.2 인가 서버에서 탈취 ____10.3.3 보호된 리소스에서 탈취
__10.4 인가 코드 ____10.4.1 Proof Key for Code Exchange(PKCE) __10.5 요약
4부. OAuth에 대한 더 많은 것
11장. OAuth 토큰
__11.1 OAuth 토큰이 무엇인가? __11.2 구조화된 토큰: JSON Web Token ____11.2.1 JWT의 구조
____11.2.2 JWT 클레임 ____11.2.3 서버에서의 JWT 구현 __11.3 암호화를 통한 토큰 보호: JOSE
____11.3.1 HS256를 이용한 대칭 시그니처 ____11.3.2 RS256을 이용한 비대칭 시그니처
____11.3.3 다른 토큰 보호 방법 __11.4 온라인으로 토큰의 정보를 조회: 토큰 인트로스펙션
____11.4.1 인트로스펙션 프로토콜 ____11.4.2 인트로스펙션 엔드 포인트 ____11.4.3 인트로스펙션 토큰
____11.4.4 인트로스펙션과 JWT의 결합 __11.5 토큰 폐기로 토큰의 라이프사이클 관리
____11.5.1 토큰 폐기 프로토콜 ____11.5.2 폐기 엔드 포인트 구현 ____11.5.3 토큰 폐기
__11.6 OAuth 토큰 라이프사이클 __11.7 요약
12장. 클라이언트 동적 등록
__12.1 서버가 클라이언트를 식별하는 방법 __12.2 실시간으로 클라이언트 등록
____12.2.1 동작 방식 ____12.2.2 왜 동적 등록을 사용하는가? ____12.2.3 등록 엔드 포인트의 구현
____12.2.4 클라이언트 등록 __12.3 클라이언트 메타 데이터
____12.3.1 핵심적인 클라이언트 메타 데이터 필드 이름 테이블
____12.3.2 사람이 읽을 수 있는 클라이언트 메타 데이터의 국제화
____12.3.3 소프트웨어 명세서 __12.4 동적으로 등록된 클라이언트의 관리
____12.4.1 관리 프로토콜의 동작 방식 ____12.4.2 동적 클라이언트 등록 관리 API 구현 __12.5 요약
13장. OAuth 2.0에서의 사용자 인증
__13.1 OAuth 2.0이 인증 프로토콜이 아닌 이유 ____13.1.1 인증 vs. 인가 __13.2 OAuth를 인증 프로토콜로 매핑
__13.3 OAuth 2.0 인증 방법 __13.4 인증을 위해 OAuth 2.0을 사용하는 데 있어서의 일반적인 함정
____13.4.1 인증의 증거로서의 액세스 토큰 ____13.4.2 인증의 증거로서의 보호된 API에 대한 접근
____13.4.3 액세스 토큰 삽입 3 ____13.4.4 수신자 제한의 결여 ____13.4.5 잘못된 사용자 정보 삽입
____13.4.6 식별 제공자마다 다른 프로토콜 사용 __13.5 OpenID 커넥트: OAuth 2.0 기반의 인증과 식별 표준
____13.5.1 ID 토큰 ____13.5.2 UserInfo 엔드 포인트 ____13.5.3 동적 서버 발견과 클라이언트 등록
____13.5.4 OAuth 2.0과의 호환성 ____13.5.5 고급 기능 __13.6 간단한 OpenID 커넥트 시스템 구축
____13.6.1 ID 토큰 생성 ____13.6.2 UserInfo 엔드 포인트 ____13.6.3 ID 토큰 파싱 ____13.6.4 UserInfo 가져오기
__13.7 요약
14장. OAuth 2.0을 이용하는 프로토콜과 프로파일
__14.1 UMA ____14.1.1 UMA가 중요한 이유 ____14.1.2 UMA 프로토콜의 동작 방식 __14.2 HEART
____14.2.1 HEART가 중요한 이유 ____14.2.2 HEART 스펙 ____14.2.3 역학적인 HEART 프로파일
____14.2.4 의미론적 HEART 프로파일
__14.3 iGov ____14.3.1 iGov가 중요한 이유 ____14.3.2 iGov의 미래 __14.4 요약
15장. 그 외 토큰들
__15.1 왜 Bearer 이외의 토큰이 필요할까? __15.2 PoPProof of Possession 토큰
____15.2.1 PoP 토큰 요청과 발급 ____15.2.2 보호된 리소스에 대한 PoP 토큰의 사용
____15.2.3 PoP 토큰 검증 __15.3 PoP 토큰 지원을 위한 구현 ____15.3.1 토큰과 키 발급
____15.3.2 서명된 헤더 생성과 전달 ____15.3.3 헤더 파싱, 토큰 인트로스펙션, 시그니처 검증
__15.4 TLS 토큰 바인딩 __15.5 요약
16장. 요약과 결론
__16.1 올바른 도구
__16.2 주요 의사 결정 __16.3 더 큰 생태계 __16.4 커뮤니티 __16.5 미래 __16.6 요약
부록 A. 이 책에서 사용하는 코드 프레임워크
__A.1 코드 프레임워크 소개
부록 B. 확장 코드 목록