Service Scenarios
상태 다이어그램으로 정의한 주요 수명주기와 시나리오 워크스루
상태 다이어그램 (state diagram) 으로 주요 수명주기를 정의한다.
User MFA Lifecycle (사용자 MFA 수명주기)
핵심 규칙
- ENROLLED 상태에서 마지막 credential 삭제는 거부된다 (
LAST_CREDENTIAL). MFA 를 완전히 해제하려면 reset 을 사용한다. - LOCKED 상태에서는 TOTP·passkey·recovery·bypass 모든 인증이
USER_LOCKED로 거부된다.
Ceremony Lifecycle (ceremony 상태)
RP Login Session (RP 로그인 세션 — 데모 공통)
Scenario Walkthroughs (시나리오 워크스루)
T-money 홈페이지 — 신규 가입자 첫 로그인 (passkey 등록)
- 사용자가 회원가입 (이름·email·비밀번호, RP 자체 DB).
- 로그인 성공 → RP 세션 PRE_MFA. RP 백엔드가
getUser(email)로 MFA 상태 조회 → 미등록. - RP 백엔드가
createRegisterToken(email, PASSKEY)→ 등록 페이지에 token 주입. - JS SDK
registerPasskey(token)→ 브라우저 인증기 프롬프트 (Touch ID 등) → result token. - RP 백엔드
verifyResultToken→ 세션 AUTHENTICATED → "Mobile Tmoney 소개" 페이지.
T-money 홈페이지 — 재방문 로그인 (passkey 인증)
- 1차 로그인 → 등록됨 →
createAuthToken(email, PASSKEY). - JS SDK
authenticatePasskey(token)→ 등록 기기로 인증 → result token → 검증 → 입장. - 기기 분실 시 "복구 코드로 로그인" →
POST /v1/recovery/verify(1회용 소모).
Card System — 직원 온보딩 (TOTP 등록)
- 관리자가 직원 등록 (사번·이름·email·초기 비밀번호) → SnowPass 에 사용자 upsert.
- 직원 첫 로그인 (사번+비밀번호) → hasTotp=false → registerToken 반환.
- 화면에 QR 표시 → 직원이 Google/Microsoft Authenticator 로 스캔 → 6자리 입력.
- 확인 성공 → recovery code 10개 1회 표시 → 세션 승격 → 대시보드.
Card System — 일상 로그인 (TOTP 인증)
- 사번+비밀번호 → authToken → 6자리 입력 →
verifyTotp→ result token → 대시보드. - 같은 코드 재입력 →
CODE_REPLAYED거부. 5회 오입력 → 5분 잠금 (USER_LOCKED).
Helpdesk — 기기 분실 (bypass code)
- 직원이 헬프데스크에 신고 → 관리자가 본인 확인 후 콘솔에서 bypass code 발급 (15분 TTL).
- 직원 로그인 → "임시 우회 코드 사용" → 통과 (1회용).
- 관리자 MFA reset → 직원 다음 로그인 시 새 기기로 재등록.
Admin — 신규 RP 연동 (테넌트 온보딩)
- 콘솔에서 테넌트 등록 (code, rpId, origins) → public key + api secret 1회 노출.
- RP 는 Java client library 에 secret 주입, 프론트에 public key + JS SDK 배포.
- 운영 중 secret 유출 의심 시 rotate — 기존 secret 즉시 무효화.