Keycloak과 외부 시스템 연동

Keycloak과 외부 시스템 연동

1️⃣ LDAP / Active Directory 연동

1. Keycloak과 LDAP 연동 개요

Keycloak은 외부 디렉토리 서버(예: OpenLDAP, Microsoft AD)와 쉽게 연동할 수 있도록 User Federation 기능을 제공합니다.

🔧 이 기능을 통해 Keycloak 내부 DB가 아닌 LDAP에 있는 사용자 계정으로 로그인할 수 있습니다.


2. 아키텍처 구조

+---------------------+
|    사용자 로그인     |
+---------------------+
           |
           v
+----------------------+        +-----------------+
|      Keycloak        |<-----> | LDAP / AD 서버  |
| (User Federation)    |        | (Read Only)     |
+----------------------+        +-----------------+

3. 설정 방법 (예: Active Directory)

  1. Keycloak Admin 콘솔 → User Federation 클릭
  2. Add providerldap 선택
  3. 주요 설정 값 입력:
항목 예시
Connection URL ldap://ad.example.local:389
Bind DN CN=admin,CN=Users,DC=example,DC=local
Bind Credential 비밀번호
Users DN CN=Users,DC=example,DC=local
  1. Test connectionTest authentication 실행
  2. Sync Now로 사용자 동기화

4. 참고

  • 기본적으로 LDAP는 읽기 전용 (쓰기 가능은 별도 설정 필요)
  • import users 여부 설정 가능 (Keycloak DB에 복사 or 실시간 조회)

2️⃣ SAML 2.0 IDP 연동

1. Keycloak을 SP(Service Provider)로 사용하는 SAML 연동

기존 회사의 SAML 기반 IDP(예: ADFS, Okta) 와 연동해 SSO(Single Sign-On) 환경을 구축할 수 있습니다.


2. 아키텍처

+---------+      SAML Request     +----------------+
| Browser | --------------------> | External IDP   |
|         | <-------------------- | (SAML IDP)     |
|         |   SAML Response       +----------------+
|         |
|         |  JWT Token            +----------------+
|         +---------------------> |   Keycloak     |
+-------------------------------->+   Application  |

3. 설정 절차

  1. Keycloak에서 SAML Client 생성
  • Client Protocol: saml
  • IDP 메타데이터 URL 등록
  1. 외부 SAML IDP에서 Keycloak SP 메타데이터 등록

Keycloak 제공 메타데이터 URL 예:

https://keycloak.example.com/auth/realms/{realm}/protocol/saml/descriptor
  1. 사용자 속성 매핑
  • SAML Assertion → Keycloak User Attribute

4. 실습 예제 (ADFS)

  • ADFS에서 Relying Party Trust 설정
  • Keycloak에서 client_id, Assertion Consumer URL 설정
  • NameID → username, Attribute → email 등 매핑

3️⃣ Keycloak as IDP (OAuth2 / OIDC / SAML)

1. Keycloak을 IDP로 사용하기

Keycloak은 자체적으로 IDP(Identity Provider) 기능을 제공하므로, 다른 시스템이 Keycloak을 통해 사용자 인증을 위임할 수 있습니다.

  • 지원 프로토콜:
    ✅ OIDC
    ✅ OAuth2
    ✅ SAML 2.0

2. 아키텍처 다이어그램 (OIDC)

+----------+             +------------+             +------------+
|  Client  | --(AuthZ)--> | Keycloak   | --(Token)--> |  Resource  |
|          |             |  (IDP)     |             |  Server    |
+----------+             +------------+             +------------+

3. 실습 예제 (OIDC 기반)

🔧 1. Keycloak Client 등록

  • Protocol: openid-connect
  • Access Type: confidential
  • Redirect URI: https://app.example.com/callback

🔧 2. 외부 애플리케이션 설정

  • Client ID / Secret 사용
  • Authorization Code Flow 구성
  • 예: https://keycloak.example.com/auth/realms/myrealm/protocol/openid-connect/auth?...

4. OIDC 응답 예시

{
  "access_token": "eyJhbGciOiJIUzI1NiIs...",
  "id_token": "eyJraWQiOiJ3MzI4...",
  "expires_in": 300
}

5. Keycloak as SAML IDP

다른 서비스(SP)가 Keycloak을 통해 인증 받도록 설정 가능

  • SAML Endpoint:
https://keycloak.example.com/auth/realms/{realm}/protocol/saml
  • Keycloak에 SP 등록
  • 메타데이터 교환 (SP ↔ Keycloak)

🔚 요약

목적 Keycloak 역할 주요 설정
LDAP 연동 외부 사용자 정보 읽기 User Federation
외부 IDP 연동 (SAML) SP SAML Client 생성
외부 앱에서 인증 위임 IDP OIDC/SAML Client 사용

RSS Feed
마지막 수정일자