Keycloak 인증(Authentication) — 비밀번호·OTP·인증 유형 설정
Keycloak 인증(Authentication) — 비밀번호·OTP·인증 유형 설정
이 장에서는 인증과 관련된 여러 주제를 다뤄요. 엄격한 비밀번호와 일회용 비밀번호(OTP) 정책을 강제하고, 다양한 자격 증명(credential) 유형을 관리하며, Kerberos로 로그인하고, 내장 자격 증명 유형을 켜고 끄는 방법입니다. 인증 구성을 바꾸고 싶다면 Admin Console의 Authentication 메뉴에서 시작하면 돼요.
출처: Keycloak Server Administration Guide — "Configuring authentication" — 공식문서
본문
비밀번호 정책
Keycloak은 렐름을 만들 때 비밀번호 정책을 연결하지 않아요. 그러면 길이·보안·복잡도 제약이 없는 단순 비밀번호를 설정할 수 있는데, 이런 단순 비밀번호는 운영(production) 환경에서 받아들일 수 없습니다. Keycloak은 Admin Console을 통해 사용할 수 있는 일련의 비밀번호 정책을 제공합니다.
- 메뉴에서 Authentication 을 클릭합니다.
- Policies 탭을 클릭합니다.
- Add policy 드롭다운에서 추가할 정책을 선택합니다.
- 선택한 정책에 적용할 값을 입력합니다.
- Save 를 클릭합니다.
정책을 저장하면 Keycloak은 이후 새 사용자에게 그 정책을 적용합니다. 대표적인 정책으로는 최소 길이(lowerCase, upperCase, digits, specialChars 요구), 비밀번호 히스토리(passwordHistory), 만료(expirePasswordToken), NotRecentlyUsed를 조합해 사용할 수 있어요.
일회용 비밀번호(OTP)
Keycloak은 TOTP(시간 기반)와 HOTP(카운터 기반) OTP를 지원합니다. 사용자는 OTP 앱(예: Google Authenticator, FreeOTP)을 연결해서 로그인 시 추가 코드를 입력할 수 있어요. Authentication → Policies 탭에서 OTP 정책(알고리즘, 자릿수, 기간)을 관리합니다.
인증 플로(Flow)
Keycloak은 로그인 과정을 인증 플로(authentication flow) 로 표현합니다. 기본 제공 플로인 browser, direct grant, registration 등은 복사해서 수정할 수 있고, 실행 단계에 인증 실행자(executor)를 추가해서 커스텀 로직을 끼워 넣을 수도 있어요. 각 흐름은 여러 단계(step)와 하위 흐름(sub-flow)으로 구성됩니다.
- Browser flow — 브라우저/리다이렉트 로그인에 사용되는 기본 흐름입니다.
- Direct grant flow — REST API로 ID/비밀번호를 직접 받아 토큰을 발급하는 흐름이에요.
- Registration flow — 사용자가 스스로 등록(self-register)할 때 거치는 흐름입니다.
자격 증명 유형과 Kerberos
사용자마다 여러 자격 증명(비밀번호, OTP, 페더레이션 링크 등)을 가질 수 있고, Admin Console에서 이를 관리할 수 있어요. Kerberos 브리지를 구성하면 Kerberos 서버에 로그인한 사용자를 자동으로 인증할 수 있습니다. 또한 기본 제공 자격 증명 유형을 비활성화해서 특정 방식의 로그인을 막을 수 있어요.