인증(Authentication) 구성

인증(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) 사용이 가능합니다.

설정 방법

  1. Authentication → Flows → Browser → “OTP Form” 활성화
  2. 사용자는 로그인 후 OTP 설정 화면을 보게 됨
  3. QR코드를 스캔 → OTP 입력 → 등록 완료

🖼️ OTP Flow 예시

[Login Form]
[Username/Password OK?]
[OTP 입력 단계]
[성공 → 토큰 발급]

3. WebAuthn

지문, 보안키, 페이스 ID 등 FIDO2 기반 인증을 지원합니다.

주요 브라우저, Windows Hello, YubiKey 등과 호환됨

설정 방법

  1. 사용자가 Account Console에서 WebAuthn 등록
  2. 이후 로그인 시 생체 인증 또는 보안키 사용

🖼️ WebAuthn 흐름

[Username 입력]
[WebAuthn Challenge → Browser ↔ Authenticator]
[서명 응답 → 검증 성공]
[로그인 완료]

3️⃣ Social Login(Google, GitHub, Naver 등)

1. 소셜 로그인이란?

Google, GitHub, Facebook, Kakao, Naver 등의 외부 OAuth2 제공자를 통해 로그인할 수 있게 하는 기능입니다.


2. 설정 예시 (Google)

  1. Google API Console → OAuth Client 생성
  2. Redirect URI:
    https://<KEYCLOAK_URL>/realms/{realm}/broker/google/endpoint
  3. Keycloak → Identity ProvidersGoogle 선택
  4. Client ID, Secret 입력 후 저장

🖼️ Social Login Flow

[Login Page]
   ↓ "Login with Google"
[Google OAuth 로그인]
[사용자 정보 수신]
[Keycloak 사용자 매핑 → 로그인 완료]

✅ 최초 로그인 시 자동 계정 생성 및 Role 매핑도 가능


3. 커스텀 소셜 로그인 (네이버, 카카오 등)

  • Identity ProviderOpenID Connect 또는 OAuth 2.0 선택
  • REST API 명세 기반으로 Authorization URL, Token URL, UserInfo URL 입력
  • 매핑: Email, Username, Name 등 필드 지정

4️⃣ 인증 흐름 커스터마이징

1. Flow 복제 및 편집

Keycloak은 인증 흐름을 드래그 앤 드롭 방식으로 수정할 수 있습니다.

🛠️ Authentication → FlowsCopy of browser → 이름 지정 후 수정


2. 예시: 특정 IP에서만 OTP 생략

  1. Conditional OTP 실행 조건 추가
  2. Custom Authenticator → IP Check 구현 (Java SPI 활용)
  3. 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 등

RSS Feed
마지막 수정일자