ID 및 액세스 관리 솔루션을 제공하는 오픈소스이다. 쉽게 말하면 인증(Authentication)과 인가(Authorization)를 쉽게 해주고 SSO(Single-Sign-On)를 가능하게 해주는 오픈소스이다.
📖 SSO 란? Single Sign-On의 약자로 한 번의 인증 과정으로 여러 컴퓨터 상의 자원을 이용 가능하게 하는 인증 기능을 뜻한다. 싱글 사인온, 단일 계정 로그인, 단일 인증이라고 한다. 만약 [Web App1]과 [Web App2]라는 2개의 서비스가 있을 때, [Web App1]에 로그인 후 작업을 하다가 [Web App2]에서 작업을 할 일이 생긴다면 [Web App2]에서도 로그인이 필요하다. 하지만 다음 그림처럼 SSO를 도입하게 된다면, 한 번의 로그인만으로 [Web App1]과 [Web App2] 등 모든 프로그램에 접근이 가능하게 된다.
반응형
🔐 Keycloak 주요 기능
다중 프로토콜 지원 - OpenID Connect, OAuth 2.0 및 SAML 2.0의 세가지 프로토콜을 지원한다.
SSO - 싱글 사인온 및 싱글 사인아웃을 지원한다.
관리자 콘솔 - 웹 기반 GUI로 관리자 콘솔을 제공한다. - 권한 및 세션을 포함하여 사용자 관리가 가능하다. - 세션을 관리하고 계정 기록을 확인할 수 있다.
사용자 ID 및 액세스 - 사용자 지정 역할 및 그룹으로 사용자 데이터베이스를 생성할 수 있도록 하여 독립 실행형 사용자 ID 및 액세스 관리자로 사용할 수 있다.
외부 ID 소스 동기화 - 사용자 데이터가 별도의 데이터베이스로 관리되고 있는 경우, 해당 데이터베이스와 동기화할 수 있다.
소셜 로그인 - 관리자 패널에서 설정을 통해 소셜 ID를 사용할 수 있다.
페이지 사용자 정의 - 사용자에게 표시되는 모든 페이지에 대해 사용자 지정을 할 수 있다.
🔐 Keycloak 주요 용어
Realm - 인증, 권한 부여가 적용되는 범위의 단위이다. - SSO 기능을 적용한다고 했을 때 SSO가 적용되는 범위가 하나의 Realm 단위가 된다.
Client - 인증, 권한 부여 행위를 수행할 어플리케이션을 나타내는 단위이다. - 하나의 realm 안에는 여러 개의 client가 들어갈 수 있으며 realm의 관리자가 각각의 client를 관리할 수 있다.
User - 인증을 필요로하는 사용자를 나타낸다. - 기본적으로 User 정보는 username, email, firstname, lastname으로 구성되어 있지만 custom user attribute를 사용하여 원하는 속성을 추가할 수 있다.