저자

스티안토르거센,페드로이고르실바

(StianThorgersen)
대부분의기업이단일벤더퍼블릭클라우드를사용할준비가되기몇년전부터클라우드연합플랫폼을구축하는아르주나테크놀로지스(ArjunaTechnologies)에서경력을시작했다.그후레드햇(RedHat)에합류해개발자들의업무를도울방법을찾았으며여기서부터Keycloak에대한아이디어가시작됐다.2013년레드햇의다른개발자와함께Keycloak프로젝트를공동설립했다.현재Keycloak프로젝트의리더이자프로젝트의최고기여자다.또한레드햇과레드햇고객의ID및접근관리업무를수행하는수석소프트웨어엔지니어로꾸준히일하고있다.

목차

1부.Keycloak시작하기

1장.Keycloak시작하기
__기술요구사항
__Keycloak소개
__Keycloak설치및실행
____도커에서Keycloak실행
____OpenJDK를통한Keycloak설치및실행
__Keycloak관리및계정콘솔활용
____Keycloak관리자콘솔시작하기
____Keycloak계정콘솔시작하기
__요약
__질문

2장.애플리케이션보안설정
__기술요구사항
__샘플애플리케이션이해
__애플리케이션실행
__애플리케이션에로그인하기
__백엔드RESTAPI안전하게호출하기
__요약
__질문

2부.Keycloak을통한애플리케이션보안

3장.간략한표준소개
__OAuth2.0을통한애플리케이션접근권한인가
__OpenIDConnect를통한사용자인증
__JWT를토큰으로활용
__SAML2.0이여전히중요한이유
__요약
__질문

4장.OpenIDConnect를활용한사용자인증
__기술요구사항
__OpenIDConnectplayground실행
__검색엔드포인트이해
__사용자인증
__ID토큰이해하기
____사용자프로파일업데이트
____사용자정의속성추가
____ID토큰에역할추가
__UserInfo엔드포인트호출
__사용자로그아웃처리
____로그아웃시작
____ID및접근토큰만료활용
____OIDC세션관리활용
____OIDC백-채널로그아웃활용
____OIDC프론트-채널로그아웃활용
____로그아웃은어떻게처리해야하는가?
__요약
__질문
__참고문헌

5장.OAuth2.0을활용한접근권한인가
__기술요구사항
__OAuth2.0플레이그라운드실행
__접근토큰획득
__사용자동의요청
____역할을사용해토큰액세스제한하기
____토큰접근을제한하기위한범위활용
__접근토큰검증
__요약
__질문
__참고문헌

6장.다양한애플리케이션유형보안
__기술요구사항
__내부및외부애플리케이션이해
__웹애플리케이션보호
____서버사이드웹애플리케이션보호
____전용RESTAPI가포함된SPA보호
____중개RESTAPI를사용하는SPA보호
____외부RESTAPI가포함된SPA보호
__네이티브및모바일애플리케이션보호
__RESTAPI및서비스보호
__요약
__질문
__참고문헌

7장.Keycloak과애플리케이션통합
__기술요구사항
__통합아키텍처선택
__통합옵션선택
__Golang애플리케이션통합
____Golang클라이언트설정
__자바애플리케이션통합
____Quarkus사용
__CreatingaQuarkusresourceserver
____SpringBoot사용
____Keycloak어댑터활용
__자바스크립트애플리케이션통합
__Node.js애플리케이션통합
____Node.js클라이언트생성
____Node.js리소스서버생성
__파이썬애플리케이션통합
____파이썬클라이언트생성
____파이썬리소스서버생성
__리버스프록시활용
__자체통합코드구현을권장하지않음
__요약
__질문
__참고문헌

8장.인가전략
__인가이해하기
__RBAC활용
__GBAC활용
____그룹멤버십을토큰에매핑
__OAuth2범위활용
__ABAC활용
__통합Keycloak인가서버활용
__요약
__질문
__참고문헌

3부.Keycloak설정및관리

9장.프로덕션환경을위한Keycloak설정
__기술요구사항
__Keycloak호스트네임설정
____프론트엔드URL설정
____백엔드URL설정
____adminURL설정
__TLS활성화
__데이터베이스설정
__클러스터링활성화
__리버스프록시설정
____노드부하분산
____클라이언트정보전송
____세션어피니티유지
__Keycloak환경테스트
____부하분산및시스템대체작동테스트
____프론트엔드및백엔드URLs테스팅
__요약
__질문
__참고문헌

10장.사용자관리
__기술요구사항
__로컬사용자관리
____로컬사용자생성
____사용자자격증명관리
____사용자정보획득및검증
____자동등록활성화
____사용자속성관리
__LDAP및액티브디렉터리통합
____LDAP매퍼이해
____그룹동기화
____역할동기화
__서드파티ID제공자통합
____OpenIDConnectID제공자생성
__소셜ID제공자연동
__사용자데이터관리
__요약
__질문
__참고문헌

11장.사용자인증
__기술요구사항
__인증흐름이해
____인증흐름설정
__패스워드사용
____패스워드정책변경
____사용자패스워드리셋
__OTPs사용
____OTP정책변경
____사용자가OTP사용여부를선택할수있도록허용
____OTP를통한사용자인증활성화
__웹인증활용
____인증흐름에서WebAuthn활성화
____보안기기등록및인증
__강력한인증사용
__요약
__질문
__참고문헌

12장.토큰및세션관리
__기술요구사항
__세션관리
____세션생명주기관리
____활성세션관리
____사용자세션조기종료
____쿠키및세션과의관련성이해
__토큰관리
____ID토큰및접근토큰생명주기관리
____리프레시토큰생명주기관리
____리프레시토큰로테이션활성화
____토큰폐기
__요약
__질문
__참고문헌

13장.Keycloak확장
__기술요구사항
__서비스공급자인터페이스이해하기
____사용자정의제공자패키징
____사용자정의제공자설치
____KeycloakSessionFactory및KeycloakSession컴포넌트이해
____제공자의생명주기이해
____제공자설정
__인터페이스변경
____테마이해
____신규테마생성및적용
____템플릿확장
____테마관련SPI확장
__인증흐름사용자정의
__다른사용자정의포인트확인
__요약
__질문
__참고문헌

4부.보안고려사항

14장.Keycloak및애플리케이션보안
__Keycloak보안
____Keycloak에대한통신암호화
____Keycloak호스트이름설정
____Keycloak에서사용하는서명키순환
____주기적인Keycloak업데이트
____외부저장소의시크릿을Keycloak으로로드
____방화벽및침입방지시스템을통한Keycloak보안
__데이터베이스보안
____방화벽을사용한데이터베이스보안
____데이터베이스인증및접근제어활성화
____데이터베이스암호화
__클러스터통신보안
____클러스터인증활성화
____클러스터통신암호화
__사용자계정보안
__애플리케이션보안
____웹애플리케이션보안
____OAuth2.0및OpenID커넥트베스트프랙티스
____Keycloak클라이언트설정
__요약
__질문
__참고문헌

__평가

출판사 서평

이책에서다루는내용

-Keycloak설치,설정및관리방법이해
-Keycloak을활용한신규및기존애플리케이션보호
-OAuth2.0및OpenIDConnect에대한기본적인이해
-프로덕션환경에배포하기위한Keycloak설정방법
-추가기능활용방법및Keycloak사용자정의방법
-Keycloak서버보안및애플리케이션보호에대한이해

이책의대상독자

개발자,시스템관리자,보안엔지니어또는Keycloak의기능을활용해애플리케이션을보호하고자하는독자를대상으로한다.
Keycloak을처음접하는경우이책을통해프로젝트에서Keycloak을활용할수있는강력한기반을제공한다.
만약Keycloak을사용해본적이있지만아직익숙해지지않았다면이책에서여러가지유용한정보를찾을수있을것이다.

이책의구성

1장,‘Keycloak시작하기’에서는Keycloak에대한간략한소개와직접적인Keycloak설치및실행을통해Keycloak을활용할준비단계를다룬다.또한Keycloak관리및계정콘솔에대해소개한다.

2장,‘첫번째애플리케이션보안설정’에서는단일페이지애플리케이션및RESTAPI로구성된샘플애플리케이션을사용해해당애플리케이션을Keycloak으로보호하는방법에관해설명한다.

3장,‘간략한표준소개’에서는간략한소개및애플리케이션을Keycloak과안전하고쉽게통합할수있도록Keycloak에서지원하는표준을비교하고설명한다.

4장,‘OpenIDConnect를통한사용자인증’에서는OpenIDConnect표준을통한사용자인증방법을다룬다.애플리케이션이OpenIDConnect를통해Keycloak에대해인증하는방법을확인하고이해할수있는샘플애플리케이션을사용한다.

5장,‘OAuth2.0을활용한접근권한인가’에서는OAuth2.0표준을통한RESTAPI및다른서비스접근인가방법을다룬다.샘플애플리케이션에서보안이적용된RESTAPI를호출하는데사용하는OAuth2.0을통해어떻게애플리케이션이접근토큰을획득할수있는지직접확인할수있다.

6장,‘다양한애플리케이션유형보안’에서는웹,모바일,네이티브애플리케이션,RESTAPI및기타백엔드서비스를비롯한다양한유형의애플리케이션을보호하는방법에관한모범사례를다룬다.

7장,‘Keycloak과애플리케이션통합’에서는Go,Java,클라이언트사이드자바스크립트,Node.js및파이썬과같은다양한프로그래밍언어기반의애플리케이션을Keycloak과통합하는방법을단계별로제공한다.또한리버스프록시를활용해프로그래밍언어또는프레임워크로구현된애플리케이션을보호하는방법도다룬다.

8장,‘인가전략’에서는애플리케이션이접근관리를수행하기위해Keycloak의사용자정보를활용하는방법,역할및그룹,사용자정의정보를다룬다.

9장,‘프로덕션환경을위한Keycloak설정’에서는TLS를활성화하는방법,관계형데이터베이스를설정하는방법,추가확장및가용성을위해클러스터링을활성화하는방법을포함해프로덕션환경에서Keycloak을설정하는방법을다룬다.

10장,‘사용자관리’에서는사용자관리와관련돼Keycloak이제공하는기능을자세히살펴본다.또한LDAP,소셜네트워크및외부ID공급자와같은외부소스의사용자를통합하는방법도설명한다.

11장,‘사용자인증’에서는보안키를포함해2차인증을활성화하는방법및Keycloak에서제공하는다양한인증기능을다룬다.

12장,‘토큰및세션관리’에서는Keycloak이서버측세션을활용해인증된사용자를추적하는방법과애플리케이션에발행된토큰관리에대한모범사례를다룬다.

13장,‘Keycloak확장’에서는로그인페이지및계정콘솔과같은사용자페이지의인터페이스를수정하는방법을포함해Keycloak을확장하는방법을다룬다.Keycloak확장을수행할수있는다양한위치와사용자정의확장을수행할수있도록해주는Keycloak의가장강력한기능중하나에대해간략하게소개한다.

14장,‘Keycloak및애플리케이션보안’에서는프로덕션환경에서Keycloak을보호하는방법에대한모범사례를다룬다.또한자체애플리케이션을보호할때준수해야하는몇가지모범사례를간략히소개한다

지은이의말

Keycloak은단일페이지애플리케이션,모바일애플리케이션,RESTAPI와같은최신애플리케이션에초점을맞춘오픈소스ID및접근관리도구다.Keycloak프로젝트는2014년개발자들이애플리케이션을더쉽게보호하는데도움을주기위해시작됐다.이후강력한커뮤니티와사용자기반을갖춘활성화된오픈소스프로젝트로성장했다.사용자가소수인소규모웹사이트부터수백만명의사용자가있는대기업까지다양한환경에서쓰이고있다.Keycloak설치방법과프로덕션사용사례에맞게Keycloak을설정하는방법에대해알아보는책이다.또한애플리케이션을보호하는방법에대해다루며,OAuth2.0및OpenIDConnect를이해하는데필요한훌륭한기초를제공한다.

옮긴이의말

클라우드와AI관련산업이발전하면서보안의중요성은더욱커지고있다.이제는대부분의소프트웨어와애플리케이션이온라인에연결돼있으며인터넷에연결된모든사용자가자유롭게접근할수있다.이러한IT환경의변화로인해사용자를인증하고다양한리소스에대한접근권한을관리하는역할은보안의핵심적인역할을수행하게됐으며모든애플리케이션은사용자의ID와접근을관리하기위한도구가필요해졌다.Keycloak은이러한ID및접근관리소프트웨어분야에서가장강력한커뮤니티를갖춘오픈소스애플리케이션이다(동일한기능을제공하는Auth0및Okta는유료이다).Keycloak은다양한인증프로토콜과LDAP또는액티브디렉토리와같은데이터베이스를지원한다.또한구글및페이스북과소셜ID제공자를지원하기때문에소셜로그인을사용하고자하는사용자에게매우유용하다.마지막으로,웹기반의GUI와SSO기능까지갖추고있다.기업의보안관리업무에서IAM(ID및접근관리)기능은이제필수이다.Auth0와Okta와같은유료솔루션도입을고민해본독자라면,오픈소스IAM솔루션으로Keycloak을고려해볼수있다.