Keycloak 고급 기능 활용
1️⃣ MFA 구성 (OTP, WebAuthn, 인증앱 등)
1. MFA란?
**MFA (Multi-Factor Authentication)**는 사용자 인증 시 2개 이상의 인증 요소를 요구하여 보안을 강화하는 방식입니다.
- 1단계: ID/PW
- 2단계: OTP, WebAuthn, 푸시 인증 등
2. OTP 기반 MFA 설정
Keycloak 기본 기능으로 Google Authenticator, Authy 등을 사용할 수 있습니다.
📌 설정 방법:
- Realm > Authentication > Flows >
Browser
복제 Username Password Form
뒤에OTP Form
추가- 사용자 설정 →
Required Action: Configure OTP
추가
💡 사용자 로그인 시 아래와 같은 화면이 노출됩니다:
1. ID/PW 입력
2. QR코드 스캔 (Google Authenticator)
3. OTP 입력
3. WebAuthn (FIDO2) 설정
WebAuthn은 지문, 보안키(YubiKey), 얼굴인식 등을 사용할 수 있는 생체 인증 방식입니다.
📌 설정 절차:
- Realm > Authentication > Required Action >
Configure WebAuthn
활성화 - 사용자에게
Configure WebAuthn
할당 - WebAuthn 호환 브라우저에서 등록 (Edge, Chrome 등)
🔐 인증 흐름:
사용자 로그인
↓
WebAuthn 장치 인증
↓
접속 허용
4. MFA 플로우 예시 다이어그램
+-------------+
| 로그인 |
+------+------+
↓
+--------------+
| 패스워드 인증 |
+------+-------+
↓
+--------------+
| OTP/WebAuthn |
+------+-------+
↓
+--------------+
| 성공 |
+--------------+
2️⃣ Account Linking (구글 + LDAP 등)
1. Account Linking이란?
하나의 사용자가 여러 인증 수단을 연결할 수 있게 해주는 기능입니다.
예:
- 회사 LDAP 계정 + 개인 Google 계정 연결
- SSO 시 자동으로 사용자 매칭
2. 예시: Google + LDAP
📌 전제 조건:
- LDAP 사용자와 Google 계정의
email
또는username
이 동일해야 함 - Identity Provider 설정에서
Link Only
또는Email Match
설정
3. Linking 설정
- Identity Providers > Google 추가
- Mapper에서
email
을preferred_username
으로 매핑 - 사용자가 로그인 → 구글 → 동일 이메일 → LDAP 계정과 연결됨
4. 플로우 다이어그램
[ 사용자 로그인 ]
↓
[ 구글 로그인 ]
↓
[ Keycloak: 동일 이메일 LDAP 사용자 존재? ]
↓ ↓
[Yes] [No]
↓ ↓
계정 링크 신규 계정 생성
3️⃣ 사용자 Self-registration 및 이메일 인증
1. Self-registration이란?
Keycloak에서 사용자가 직접 회원가입할 수 있도록 허용하는 기능입니다.
2. 설정 방법
- Realm > Login > “User registration” 활성화
- Realm > Login > “Verify Email” 활성화
이제 /auth/realms/<realm>/protocol/openid-connect/registrations
경로로 접근 시 회원가입 가능
3. 이메일 인증 설정
📌 SMTP 설정 필요:
Realm > Email > SMTP 설정 입력
- Host:
smtp.yourcompany.com
- Port:
587
- From:
noreply@yourcompany.com
이메일 인증이 활성화되면 회원가입 후 메일을 통해 인증을 진행해야 로그인 가능
4. 등록 플로우 다이어그램
[ 회원가입 폼 ]
↓
[ 이메일 인증 링크 ]
↓
[ 로그인 가능 ]
4️⃣ 사용자 Federation 전략
1. Federation이란?
외부 사용자 디렉토리(예: LDAP, Active Directory)와 연동하여 사용자 정보를 가져오거나 인증을 위임하는 방식입니다.
2. Federation vs Identity Provider
구분 | Federation | Identity Provider |
---|---|---|
인증 방식 | 내부 Keycloak 로그인 | 외부 로그인 위임 (SSO) |
예시 | LDAP, AD | Google, SAML, GitHub |
사용자 정보 | 동기화하여 Keycloak에 존재 | 인증할 때만 조회 |
3. LDAP Federation 설정
- Realm > User Federation >
Add Provider: ldap
- 연결 정보 입력:
- Connection URL:
ldap://ldap.company.com
- Bind DN:
cn=admin,dc=company,dc=com
- Base DN:
ou=users,dc=company,dc=com
- Connection URL:
- Sync 설정:
- Periodic Sync
- On-demand Sync
4. Federation 아키텍처
+-------------+ +---------------+
| Keycloak | <--> | LDAP Server |
+-------------+ +---------------+
↑
↓
[ 로그인 요청 ]
✅ 마무리 요약
기능 | 요약 |
---|---|
MFA | OTP, WebAuthn 등 2차 인증으로 보안 강화 |
Account Linking | 여러 계정을 하나로 연결 가능 |
Self-registration | 사용자 직접 회원가입 및 이메일 인증 |
Federation | 외부 LDAP/AD 사용자 인증 및 동기화 |
마지막 수정일자