본문으로 바로가기

KeyCloak 설치 & 정리

category Computer Science/Java 2020. 12. 6. 16:52

해당 포스트에서는, KeyCloak 에 대한 전반적인 설명 & 외부 DB(본인의 DB) 연결 방법에 대해 정리했다.

 

KeyCloak이란?

- 국제적인 인증, 인가 표준(OIDC, SAML, OAuth 2.0 등) 을 모두 제공하는 오픈 소스로,

   Kubernetes 나 MSA 환경에 최적화 된 솔루션이다.

 

- RedHat 에서 만든 솔루션이다.

 

사용 목적?

- 2019년 11월 24일 Spring Security 블로그에서 Authorization Server의 지원을 중지한다는 글을 발표했다고 한다.

   오픈 소스 인증 서버가 많이 존재하며, 지원은 적합하지 않다는 내용이다.

 

    => 따라서, 오픈 소스 인증 서버 中 KeyCloak 서버를 사용해보자

 

[기능]

- SSO

- ID 중개 와 소셜 로그인 (OpenID, SAML, GitHub, Google 등)

- 관리자 / 계정관리 콘솔 제공

- 표준 프로토콜 지원(OpenID Connect + OAuth2.0, SAML)

- Client Adapters (다수의 플랫폼과 프로그래밍 언어가 사용가능한 adapter를 가짐)

   

    =>  KeyCloak 에서 제공하는 기능이 생각보다 많다. ( 장점이자, 단점 ) 

 

[특징]

- H2 Database : 기본적으로 Java 기반의 H2 데이터베이스를 제공하며 기동한다.

    => 실제 구축 시, External DB (ex. PostgreSQL, MySQL)를 붙여 사용해야 한다.

    * 테스트 시, H2 사용해도 무방

 

- 운영모드 지원 (4가지) :

      - Standalone Mode : 로컬 전용 / 테스트용 / 오류 발생 시 모든 서비스가 다운

      - Standalone Clusterd Mode : (1번 모드)를 클러스터로 구성하는 모드

      - Domain Clustered Mode : (2번 모드)의 단점을 해결한 중앙에서 Keycloak 관리하는 모드

      - Cross-Datacenter Replication Mode : (1~3번 모드) 와 달리 여러개의 DB를 서로의 클러스터가 사용하는 모드

 

    => 해당 글에서는 Standalone Mode 를 사용해서 기동한다.

 

[OpenID Connect(OIDC) 과 OAuth 2.0 차이]

KeyCloak은 기본 인증 방식이 OAuth 2.0을 베이스로 한 OIDC 로 알고 있다.

    => OIDC & OAuth2.0 관계에 대해 정리한다.

 

- OIDC  

    Oauth 2.0의 확장 인증 프로토콜로, 인증 (본인 증명)에 초점을 맞춤

 

- OAuth 2.0

    권한 부여 프레임워크로, 데이터에 대한 액세스 권한 부여에 초점을 맞춤

    OAuth 2.0 은 인증 프로토콜이 아님 (공식 홈페이지에 의거)

 

- 차이

    OIDC는 기본적으로 OAuth 프로토콜을 기반으로 작동하는 기술로, 사용 목적에 큰 차이를 둠

    위에서 설명한대로, OIDC는 인증 (사용자 개인정보가 담긴 id_token 등) / 

    OAuth2.0 인가 (해당 플랫폼에 저장된 사용자 데이터 접근 Access_token)에 목적을 둠

 

- KeyCloak OIDC 정리

    KeyCloak은 기본 인증 방식이 OAuth 2.0을 베이스로 한 OIDC

     

    => KeyCloak 서버는 OAuth 2.0 권한 부여 프레임워크 위에 빌드된 OIDC를 사용하여

         인증을 가능하게 하는 사용하기 쉬운 권한 부여 서버를 제공하는 것 같다.

    

 

[설치]

KeyCloak Standalone Mode 즉, 설치형 서버로 직접 다운 & 기동이 필요하다.

 

KeyCloak Document 참고해서 작성한다.

https://www.keycloak.org/docs/latest/getting_started/index.html

 

Getting Started Guide

Now that you have an admin account, a realm, and a user, you can use Keycloak to secure a sample WildFly servlet application. You install a WildFly client adapter, register the application in the admin console, modify the WildFly instance to work with Keyc

www.keycloak.org

설치 1. KeyCloak 서버 다운로드 www.keycloak.org/downloads.html

 

설치 2. 실행 

    - KeyCloak/bin/standalone.bat -Djboss.socket.binding.port-offset=100

* 실행 시, -Djboss.socket.binding.port-offset=100 를 파라미터로 주면 8080으로 기동하지 않고 8180으로 기동할 수 있다. (택)

 

설치 3. Admin 계정 생성

    - http://localhost:{8080 or 설정한 포트}/auth

 

설치 4. 관리 콘솔 접속

    - http://localhost:{8080 or 설정한 포트}/auth/admin/

 

* 더 자세한 설명은 위의 KeyCloak.org/Document 참고

 

 

[제공하는 관리 콘솔]

사용자 관리 / 토큰 만료시간 설정 / 캐시 지우기 / 로그인 창 테마 / 암호 정책 설정 / Google 같은 인증 서버 IDP 사용 제어 /

흔히 알고있는 인증 방식 ( Authorization Code / Client Credentials / Password Credentials / Implicit ) 제어 등

 

    => 해당 콘솔에서 제공하는 세부 기능이 많다.

     * KeyCloak Documents 참고

 KeyCloak Admin Console