keycloak은 17버전 이후로 WildFly에서 Quarkus로 변경되었습니다. (https://www.keycloak.org/migration/migrating-to-quarkus)
17버전 이전과 설정 방법이 다르고 정보 또한 부족하여 많은 시행 착오를 겪었습니다. Keycloak을 사용하시는 분들께 도움이 되고자 작업했던 내용들을 정리하려고 합니다.
Keycloak이란
keycloak은 웹 앱, Restful 웹 서비스를 위한 SSO 솔루션입니다. Keycloak은 로그인, 등록, 관리 및 계정 관리를 위한 사용자 정의 가능한 사용자 인터페이스를 제공합니다. Keycloak을 통합 플랫폼으로 사용하여 기존 LDAP 및 Active Directory 서버에 연결할 수도 있습니다. Facebook 및 Google과 같은 타사 ID 제공업체에 인증을 위임할 수도 있습니다.
특징
- 브라우저 애플리케이션을 위한 Single Sign On / Single Sign Out
- OpenID / SAML 지원.
- 소셜 로그인 - Google, GitHub, Facebook, Twitter 및 기타 소셜 네트워크로 로그인할 수 있습니다.
- 테마 지원 - 기본 Keycloak에서 제공해주는 페이지들을 커스텀 할 수 있습니다.
- 로그인 흐름 - 선택적 사용자 자체 등록, 비밀번호 복구, 이메일 확인, 비밀번호 업데이트 필요 등
- 세션 관리 - 관리자와 사용자가 사용자 세션을 보고 관리할 수 있습니다.
- 토큰 매퍼 - 사용자 속성, 역할 등을 원하는 방식으로 토큰과 명령문에 매핑합니다.
설치
설치는 Keycloak을 직접 다운 받는 방법 (공부 할때 추천) 과, Docker Compose를 이용하는 방법 두가지로 진행하겠습니다.
OpenJDK 11버전 이상이 설치되어 있어야 합니다. 설치 환경은 Mac 기준입니다.
1. Keycloak을 직접 다운로드
https://www.keycloak.org/downloads 에 접속하여 아래 Zip 파일을 다운 받습니다.
이후에 압축을 풀고 keycloak의 폴더에서 다음 커맨드를 입력합니다.
$ sh ./bin/kc.sh start-dev
2. Docker Compose로 설치
# docker-compose.yml
version: "3.8"
services:
keycloak:
image: quay.io/keycloak/keycloak:18.0.2
container_name: keycloak
environment:
- KEYCLOAK_ADMIN=admin
- KEYCLOAK_ADMIN_PASSWORD=admin
ports:
- "8080:8080"
command: start-dev
healthcheck:
test: "curl -f http://localhost:8080/admin || exit 1"
이후에 다음 커맨드를 입력해 줍니다.
$ docker-compose up -d
Admin 계정 생성과 로그인
http://localhost:8080에 접속합니다.
위의 화면에서 최초 admin 계정을 생성합니다.
저는 아이디: admin, 비밀번호: admin으로 설정하겠습니다. (Docker Compose의 경우 이미 admin/admin으로 생성되어 있습니다.)
빨간색으로 표시된 부분을 클릭하고, 로그인을 합니다.
수고하셨습니다. 다음 포스트에서는 Realm, Client 그리고 User 생성을 해보겠습니다.