해당 포스트에서는, 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
설치 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 참고
'Computer Science > Java' 카테고리의 다른 글
# Intellij Custom LiveTemplates (0) | 2023.04.06 |
---|---|
KeyCloak 외부 DB 연결 (PostgreSQL) (0) | 2020.12.06 |
# Google_OAuth2.0_SpringBoot 구현 1 - Authorization code (0) | 2020.11.07 |
# 전자정부 프레임워크 세부 적용 규칙 - Intellij + SpringBoot 적용 (0) | 2020.11.01 |
[intelliJ] 전자정부 프레임워크 구축(세팅)하기 (0) | 2020.10.14 |