본문 바로가기
Programming

Keycloak

by BTC_보담씨 2023. 6. 23.

항상 웃음이 나는 픠식팀 입니다.

오늘은 Keycloak에 대해서 한번 알아 보겠습니다.

Keycloak이란?

Keycloak은 사용자 인증과 권한 부여를 위한 오픈소스이고 ID 및 액세스를 관리 쉽게 할 수 있도록 제공하는 솔루션입니다. 그리고 오픈 소스이기 때문에 무료로 사용할 수 있고 커뮤니티에서 개발 및 유지보수가 활발하게 이루어지기 때문에 안정성과 신뢰성이 높다고 할 수 있습니다.

다양한 클라우드 환경에서 쉽게 배포할 수 있고 컨테이너 환경에서도 사용할 수 있으며 그리고 Kubernetes, OpenShift와 같은 컨테이너 오케스트레이션에서도 활용할 수 있습니다.

현재는 RedHat의 관리 하에 있습니다.

 

기능 및 특징

SSO(Single-Sign On)

  • 사용자는 keycloak에 로그인 하면 다른 응용프로그램에 액세스하기 위해 다시 로그인 할 필요가 없다.
  • 로그아웃에도 똑같이 적용한다.

ID 중개(Identity Brokering)와 소셜 로그인

  • 구글, 깃허브, 페이스북, 트위터 등 소셜 네트워크를 통한 로그인
  • OpenID Connect 또는 SAML 2.0 ID 공급자를 사용하요 사용자를 인증할 수 있다

사용자 연합

  • 기존 LDAP 또는 Active Directory 서버에 연결할 수 있는 내장 지원 기능이 있다.
  • 관계형 데이터베이스와 같은 다른 저장소에 사용자가 있는 경우 자체 공급자를 구현할 수 있다.

관리 콘솔

  • 관리 콘솔을 통해 관리자는 Keycloak 서버의 모든 측면을 중앙에서 관리할 수 있다.
  • 다양한 기능을 활성화하거나 비활성화 할 수 있다.
  • 어플리케이션 및 서비스 생성을 관리하고 세부적인 권한에 대해서 정책을 부여할 수 있다.
  • 권한 및 세션을 포함하여 사용자를 관리 할 수 있다.

계정 관리 콘솔

  • 사용자는 자신의 계정을 관리할 수 있다.
    • 프로필을 업데이트하고, 패스워드를 변경하고, 2차 인증을 설정할 수도 있다.
  • 세션을 관리, 계정의 기록 확인
  • 소셜 로그인 또는 ID 중개자를 사용하도록 설정한 경우 사용자는 자신의 계정을 추가 공급자와 연결하여 다른 ID 공급자가 있는 동일한 계정으로 인증할 수 있다.

표준 프로토콜

  • Keycloak은 표준 프로토콜을 기반으로 하며 OpenID Connect, OAuth 2.0 및 SMAL을 지원한다.

인증 서비스

  • 세분화된 인증 서비스 제공
  • 관리 콘솔에서 모든 서비스에 대한 사용권한을 관리할 수 있으며 필요한 정책을 정확하게 정의할 수 있다.

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

  • Standalone Mode : 로컬 전용 / 테스트용 / 오류 발생시 모든 서비스가 다운
  • Standalone Clusterd Mode : (1번 모드)를 클러스터로 구성하는 모드
  • Domain Clustered Mode : (2번 모드)의 단점을 해결한 중앙에서 keycloak 관리하는 모드
  • Cross-Datacenter Replication Mode : 다른 모드와 달리 여러개의 DB를 서로의 클러스터가 사용하는 모드

 

이러한 다양한 기능과 특징이 있습니다.

 

 

사용 용어

OIDC

  • OAuth가 권한 부여만 다루는 것이라면 OIDC는 OAuth를 포함하여 인증과 권한 부여를 모두 포함한 것
  • SSO의 구현을 위한 수단으로 사용된다.

Realm

  • 인증, 권한 부여가 적용되는 범위를 나타내는 범위
  • SSO로서 인증 대상의 범위를 지정
  • Realm을 통해 Namespace 형태로 관리할 수 있다.
  • 다수의 Realm을 가질 수 있고 일반적으로 Master(default로 생성된 realm)는 관리자의 목적으로만 사용하고 다른 Relam을 생성하여 사용하기를 권장한다.

Master realm

  • 이 realm은 Keycloak을 실행할 때 만들어지는 것으로 처음 생성한 admin 계정이 Master realm에 속한다.
  • 다른 realm을 생성하는 용도로 사용한다.

Other realm

  • Master Realm의 admin에 의해서 만들어진다.
  • 관리자는 사용자와 어플리케이션을 만들 수 있고 어플리케이션은 사용자가 소유한다.

Client

  • SSO를 사용할 각 Application
  • 하나의 Realm에 n개의 Client를 생성, 관리할 수 있다.

User

  • Client에 인증을 요청할 사용자
  • 하나의 Realm에는 Realm에 종속된 N개의 User를 생성하고 관리할 수 있다.
  • 기본적으로 User는 Username, Email, FirstName, LastName으로 구성되어 있지만 Custom User Attribute를 사용하면 사용자가 원하는 속성을 추가할 수 있다.

Role

  • User에게 부여할 권한 내용
  • Keycloak의 REST API를 사용할 권한을 부여할 수 있고 사용자가 정의한 권한을 부여할 수도 있다.

 

다음번에는 다른 내용으로 찾아 뵙겠습니다~

 

'Programming' 카테고리의 다른 글

AOP란?  (0) 2023.06.26
[Vue]Vuex 핵심 개념  (0) 2023.06.25
[C#] .NET Winform 간단한 UI 구성 방법  (0) 2023.06.22
UML 다이어그램 종류와 목적  (0) 2023.06.19
JPA란?  (0) 2023.06.14

댓글