인증(Authentication) 구성
1️⃣ Keycloak Login Flow 이해
1. 기본 Login Flow란?
Keycloak에서 인증 절차는 Login Flow라는 이름으로 구성되며, 사용자가 로그인할 때 어떤 과정을 거칠지를 정의합니다.
2. 기본 흐름 구성 요소
- Username/Password Form
- OTP (Optional)
- Conditional Checks (e.g., User Enabled?)
- Set Cookie / Issue Token
🖼️ 기본 Login Flow 예시
[Login Page]
↓
[Username + Password 입력]
↓
[조건 검사 (이메일 확인, 잠금 여부 등)]
↓
[OTP 확인 (선택)]
↓
[Access Token 발급]
🔧 이 Flow는
Authentication → Flows
메뉴에서 복제 후 커스터마이징할 수 있습니다.
2️⃣ Username/Password, OTP(MFA), WebAuthn
1. Username / Password
가장 기본적인 인증 방식입니다.
Keycloak에 등록된 사용자 계정의 자격 정보를 이용하여 로그인합니다.
Form → username: alice / password: ******
관리자는 사용자 생성 시
Temporary
비밀번호를 지정해 초기 로그인 시 강제 변경도 가능!
2. OTP (One-Time Password)
**다단계 인증(MFA)**을 위해 TOTP 기반 앱(예: Google Authenticator, Authy) 사용이 가능합니다.
설정 방법
- Authentication → Flows → Browser → “OTP Form” 활성화
- 사용자는 로그인 후 OTP 설정 화면을 보게 됨
- QR코드를 스캔 → OTP 입력 → 등록 완료
🖼️ OTP Flow 예시
[Login Form]
↓
[Username/Password OK?]
↓
[OTP 입력 단계]
↓
[성공 → 토큰 발급]
3. WebAuthn
지문, 보안키, 페이스 ID 등 FIDO2 기반 인증을 지원합니다.
주요 브라우저, Windows Hello, YubiKey 등과 호환됨
설정 방법
- 사용자가 Account Console에서 WebAuthn 등록
- 이후 로그인 시 생체 인증 또는 보안키 사용
🖼️ WebAuthn 흐름
[Username 입력]
↓
[WebAuthn Challenge → Browser ↔ Authenticator]
↓
[서명 응답 → 검증 성공]
↓
[로그인 완료]
3️⃣ Social Login(Google, GitHub, Naver 등)
1. 소셜 로그인이란?
Google, GitHub, Facebook, Kakao, Naver 등의 외부 OAuth2 제공자를 통해 로그인할 수 있게 하는 기능입니다.
2. 설정 예시 (Google)
- Google API Console → OAuth Client 생성
- Redirect URI:
https://<KEYCLOAK_URL>/realms/{realm}/broker/google/endpoint
- Keycloak →
Identity Providers
→Google
선택 - Client ID, Secret 입력 후 저장
🖼️ Social Login Flow
[Login Page]
↓ "Login with Google"
[Google OAuth 로그인]
↓
[사용자 정보 수신]
↓
[Keycloak 사용자 매핑 → 로그인 완료]
✅ 최초 로그인 시 자동 계정 생성 및 Role 매핑도 가능
3. 커스텀 소셜 로그인 (네이버, 카카오 등)
Identity Provider
→OpenID Connect
또는OAuth 2.0
선택- REST API 명세 기반으로
Authorization URL
,Token URL
,UserInfo URL
입력 - 매핑:
Email
,Username
,Name
등 필드 지정
4️⃣ 인증 흐름 커스터마이징
1. Flow 복제 및 편집
Keycloak은 인증 흐름을 드래그 앤 드롭 방식으로 수정할 수 있습니다.
🛠️
Authentication → Flows
→Copy of browser
→ 이름 지정 후 수정
2. 예시: 특정 IP에서만 OTP 생략
Conditional OTP
실행 조건 추가- Custom Authenticator →
IP Check
구현 (Java SPI 활용) - OTP 조건부로 실행
3. 플로우 다이어그램
+-----------------------+
| Login Page |
+-----------------------+
↓
+-----------------------+
| Username/Password Form|
+-----------------------+
↓
+-------------------------------+
| Conditional OTP (if needed) |
+-------------------------------+
↓
+-----------------------+
| Token 발급 |
+-----------------------+
🔚 요약
인증 방식 | 설명 | 특징 |
---|---|---|
Username/Password | 기본 로그인 방식 | 가장 일반적 |
OTP (MFA) | 2단계 인증 | TOTP 기반, 보안 향상 |
WebAuthn | 생체 인증, FIDO2 | 패스워드 없는 로그인 가능 |
Social Login | 외부 OAuth 로그인 | Google, GitHub, Naver 등 |
마지막 수정일자