Keycloak Keyword

koonlx·2025년 5월 20일

Keycloak

목록 보기
2/2
post-thumbnail

Keycloak 주요 개념 및 컴포넌트 상세 설명

Realm (영역)

  • Realm은 Keycloak에서 논리적으로 나누어진 관리 영역을 의미합니다. "왕국"이라는 뜻처럼 각 Realm은 서로 완전히 독립적인 자원을 갖는다.
  • 사용자, 인증, 인가, 권한, 그룹이 관리되는 범위다.
  • 한 Realm 내의 Client들은 서로 SSO(Single Sign-On)를 공유한다.
  • 각 Realm은 고유한 설정, 정책, 사용자 데이터베이스를 가진다
  • 여러 환경(개발/테스트/운영) 또는 다른 서비스 라인에 대해 별도의 Realm을 생성할 수 있다
  • Master Realm은 Keycloak 설치 시 기본으로 제공되는 관리용 영역이다

Client (클라이언트)

  • Client는 Keycloak에 사용자 인증을 요청하는 엔티티로, 일반적으로 애플리케이션이나 서비스를 의미한다.
  • Keycloak의 보안 서비스를 이용하는 애플리케이션이다.
  • 액세스 토큰이나 ID 토큰을 요청하고 사용한다.
  • 웹 애플리케이션, 모바일 앱, RESTful 서비스 등이 모두 Client가 될 수 있다.
  • Client ID와 Client Secret 등의 자격 증명을 통해 Keycloak과 통신한다.
  • Client 유형은 public, confidential, bearer-only 등으로 구분된다.

User (사용자)

  • User는 Keycloak 시스템에 로그인할 수 있는 실제 사용자 엔티티를 의미한다.
  • 사용자명, 이메일, 주소, 전화번호 등 개인 정보를 포함한다.
  • Realm 단위로 관리되어, 한 Realm에 생성된 사용자는 다른 Realm에서 사용할 수 없다.
  • 그룹에 소속되거나 역할이 할당될 수 있다.
  • 내장된 사용자 관리 기능 또는 외부 사용자 저장소(LDAP, Active Directory)와 연동할 수 있다.

Role (역할)

  • Role은 사용자의 유형과 카테고리를 식별하고, 접근 권한을 정의하는 데 사용된다.
  • 사용자가 수행할 수 있는 작업을 정의한다(admin, user, manager 등).
  • 개별 사용자에게 직접 권한을 부여하기보다 역할을 통해 권한을 관리한다.
  • Realm Role(전체 영역에 적용)과 Client Role(특정 클라이언트에만 적용)로 구분된다.
  • Composite Role을 통해 여러 역할을 하나로 결합할 수 있다.

Group (그룹)

  • Group은 사용자들의 집합으로, 역할 관리를 간소화한다.
  • 여러 사용자를 하나의 그룹으로 묶어 관리할 수 있다.
  • 역할을 그룹에 할당하면 그룹의 모든 구성원이 해당 역할을 상속받는다.
  • 계층 구조로 구성할 수 있어 조직 구조를 반영할 수 있다.
  • 사용자는 여러 그룹에 속할 수 있다.

Credential (자격 증명)

  • Credential은 Keycloak이 사용자를 인증하기 위해 사용하는 데이터다.
  • 비밀번호, OTP(일회용 비밀번호), 디지털 인증서, 지문 등 다양한 형태가 있다.
  • 다양한 인증 방식(Multi-factor Authentication)을 지원한다.
  • 비밀번호 정책(강도, 만료일, 이력 관리 등)을 설정할 수 있다.
  • 사용자별로 필요한 자격 증명 유형을 구성할 수 있다.
  • Consent는 사용자가 클라이언트에게 자신의 정보에 대한 접근 권한을 부여하는 과정이다.
  • 관리자가 클라이언트의 인증 프로세스 참여 전에 사용자 동의를 요구할 수 있다.
  • 사용자는 자격 증명을 제공한 후 권한 부여 요청에 대한 동의 여부를 결정할 수 있다.
  • 어떤 정보가 어떤 클라이언트에게 공유되는지 투명하게 관리된다.
  • 사용자는 이전에 제공한 동의를 계정 콘솔에서 관리할 수 있다.

Client Scope (클라이언트 스코프)

  • Client Scope는 클라이언트가 요청할 수 있는 권한 범위를 정의한다.
  • 액세스 토큰 내 선언된 역할을 제한하는 메커니즘이다.
  • 새로운 클라이언트 생성 시 공통 설정을 쉽게 적용할 수 있다.
  • Protocol Mapper를 정의해 토큰에 추가할 클레임을 관리한다.
  • Default와 Optional로 구분하여 클라이언트에 자동 또는 선택적으로 적용할 수 있다.

Client Role (클라이언트 역할)

  • Client Role은 특정 클라이언트에만 적용되는 역할이다.
  • 클라이언트 애플리케이션에 고유한 역할을 정의할 수 있다.
  • 해당 클라이언트에 전담된 역할 네임스페이스를 제공한다.
  • 클라이언트별로 세분화된 권한 관리가 가능하다.
  • 토큰에 포함되어 클라이언트 애플리케이션에서 권한 검사에 사용된다.

Identity Provider (신원 제공자)

  • Identity Provider는 사용자 인증을 대신 처리해주는 외부 시스템이다.
  • Google, Facebook, GitHub 등 소셜 로그인 서비스와 연동할 수 있다.
  • SAML, OpenID Connect 등의 표준 프로토콜을 지원하는 외부 IdP와 연결 가능하다.
  • 사용자는 로그인 화면에서 다양한 IdP 중 하나를 선택할 수 있다.
  • 각 Realm은 여러 외부 Identity Provider와 통합할 수 있다.

Identity Brokering (신원 중개)

  • Identity Brokering은 외부 Identity Provider를 통한 인증을 Keycloak이 중개하는 기능이다.
  • 사용자가 기존 계정(Google, Facebook 등)으로 로그인할 수 있게 한다.
  • 다른 조직이나 시스템 간의 사용자 인증을 통합한다.
  • 사용자 정보를 매핑하여 Keycloak 내 사용자 프로필을 자동 생성할 수 있다.
  • First Broker Login Flow를 통해 최초 로그인 시 추가 검증 절차를 구성할 수 있다.

User Federation (사용자 연동)

  • User Federation은 외부 사용자 저장소와 Keycloak을 연결하는 기능이다.
  • LDAP, Active Directory 등 외부 사용자 데이터베이스와 연계한다.
  • 기존 사용자 정보를 마이그레이션하지 않고 활용할 수 있다.
  • 사용자 정보를 실시간으로 동기화하거나 캐싱할 수 있다.
  • 속성 매핑을 통해 외부 저장소의 데이터를 Keycloak 형식으로 변환한다.

Session (세션)

  • Session은 사용자의 인증 상태와 관련된 정보를 관리한다.
  • SSO Session Settings: 단일 로그인 세션의 수명주기를 관리한다.
  • Client Session Settings: 클라이언트별 세션을 독립적으로 설정할 수 있다.
  • Offline Session Settings: 오프라인 상태에서도 액세스할 수 있는 장기 세션을 관리한다.
  • 세션 유휴 시간, 최대 지속 시간, Remember Me 기능 등을 세밀하게 설정할 수 있다.

Adapter (어댑터)

  • Adapter는 애플리케이션이 Keycloak과 안전하게 통신하도록 지원하는 라이브러리다.
  • 다양한 프로그래밍 언어와 프레임워크(Java, JavaScript, Node.js, .NET 등)를 위한 어댑터를 제공한다.
  • 토큰 검증, 세션 관리, 권한 검사 등의 기능을 애플리케이션에 통합한다.
  • 애플리케이션 환경에 설치되어 Keycloak과의 인증 및 권한 부여 통신을 자동화힌다.
  • 오픈소스 및 서드파티 어댑터도 사용 가능하다.

Theme (테마)

  • Theme는 Keycloak의 UI를 사용자 정의할 수 있는 요소다.
  • 로그인, 계정 관리, 관리자 콘솔 등 다양한 화면의 모양을 변경할 수 있다.
  • HTML 템플릿, CSS, 자바스크립트, 이미지, 메시지 파일로 구성된다.
  • Freemarker 템플릿 엔진을 사용하여 동적 콘텐츠를 생성한다.
  • 기업 브랜딩에 맞게 로고, 색상, 폰트 등을 맞춤 설정할 수 있다.

Event (이벤트)

  • Event는 Keycloak 시스템 내에서 발생하는 주요 활동에 대한 기록이다.
  • 로그인, 로그아웃, 계정 생성, 역할 할당 등의 이벤트를 추적한다.
  • 관리자 콘솔에서 이벤트 로그를 조회하고 필터링할 수 있다.
  • 이벤트 저장 기간, 저장할 이벤트 유형을 설정할 수 있다.
  • 외부 데이터베이스에 이벤트를 저장하여 감사 및 분석에 활용할 수 있다.

Protocol Mapper (프로토콜 매퍼)

  • Protocol Mapper는 사용자 정보를 토큰이나 SAML 어설션에 매핑하는 역할을 한다.
  • 사용자 속성, 그룹 멤버십, 역할 등을 토큰 클레임으로 변환한다.
  • 클라이언트 스코프 수준에서 정의하여 여러 클라이언트에서 재사용할 수 있다.
  • 토큰에 추가되는 정보를 세밀하게 제어할 수 있다.
  • 표준 매퍼 외에도 사용자 정의 매퍼를 개발할 수 있다.

Admin Console (관리 콘솔)

  • Admin Console은 Keycloak 시스템을 관리하기 위한 웹 기반 인터페이스다.
  • 사용자, 클라이언트, 역할, 그룹 등을 관리할 수 있다.
  • Realm 설정, 인증 흐름, 토큰 설정 등을 구성할 수 있다.
  • Identity Provider 및 User Federation 연동을 설정할 수 있다.
  • 이벤트 로그, 세션 관리 등 시스템 모니터링 기능을 제공한다.

Account Console (계정 콘솔)

  • Account Console은 사용자가 자신의 계정 정보를 관리할 수 있는 인터페이스다.
  • 사용자가 프로필 정보, 비밀번호, 인증 방법 등을 변경할 수 있다.
  • 연결된 소셜 계정을 관리할 수 있다.
  • 활성 세션을 확인하고 로그아웃할 수 있다.
  • 클라이언트에 제공한 동의 내역을 확인하고 관리할 수 있다.

SPI (Service Provider Interface)

  • SPI는 Keycloak의 기능을 확장하거나 커스터마이즈할 수 있는 인터페이스다.
  • 다양한 기능 영역(테마, 사용자 저장소, 인증 등)에 대한 확장 포인트를 제공한다.
  • 자체 구현을 개발하여 Keycloak의 동작을 사용자 정의할 수 있다.
  • ProviderFactory와 Provider 인터페이스를 구현하여 확장 모듈을 개발한다.
  • 사용 가능한 SPI에는 AuthenticatorFactory, UserStorageProviderFactory 등이 있다.

Kerberos

  • Kerberos는 Keycloak에서 지원하는 네트워크 인증 프로토콜이다.
  • 윈도우 도메인 환경에서 SSO를 구현하는 데 사용된다.
  • Active Directory와 연동하여 윈도우 계정으로 자동 로그인할 수 있다.
  • SPNEGO 프로토콜을 통한 브라우저 기반 SSO를 지원한다.
  • User Federation과 함께 사용하여 기업 환경의 인증 시스템과 통합할 수 있다.
profile
Server Developer

0개의 댓글