SnowPass

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 등록)

  1. 사용자가 회원가입 (이름·email·비밀번호, RP 자체 DB).
  2. 로그인 성공 → RP 세션 PRE_MFA. RP 백엔드가 getUser(email) 로 MFA 상태 조회 → 미등록.
  3. RP 백엔드가 createRegisterToken(email, PASSKEY) → 등록 페이지에 token 주입.
  4. JS SDK registerPasskey(token) → 브라우저 인증기 프롬프트 (Touch ID 등) → result token.
  5. RP 백엔드 verifyResultToken → 세션 AUTHENTICATED → "Mobile Tmoney 소개" 페이지.

T-money 홈페이지 — 재방문 로그인 (passkey 인증)

  1. 1차 로그인 → 등록됨 → createAuthToken(email, PASSKEY).
  2. JS SDK authenticatePasskey(token) → 등록 기기로 인증 → result token → 검증 → 입장.
  3. 기기 분실 시 "복구 코드로 로그인" → POST /v1/recovery/verify (1회용 소모).

Card System — 직원 온보딩 (TOTP 등록)

  1. 관리자가 직원 등록 (사번·이름·email·초기 비밀번호) → SnowPass 에 사용자 upsert.
  2. 직원 첫 로그인 (사번+비밀번호) → hasTotp=false → registerToken 반환.
  3. 화면에 QR 표시 → 직원이 Google/Microsoft Authenticator 로 스캔 → 6자리 입력.
  4. 확인 성공 → recovery code 10개 1회 표시 → 세션 승격 → 대시보드.

Card System — 일상 로그인 (TOTP 인증)

  1. 사번+비밀번호 → authToken → 6자리 입력 → verifyTotp → result token → 대시보드.
  2. 같은 코드 재입력 → CODE_REPLAYED 거부. 5회 오입력 → 5분 잠금 (USER_LOCKED).

Helpdesk — 기기 분실 (bypass code)

  1. 직원이 헬프데스크에 신고 → 관리자가 본인 확인 후 콘솔에서 bypass code 발급 (15분 TTL).
  2. 직원 로그인 → "임시 우회 코드 사용" → 통과 (1회용).
  3. 관리자 MFA reset → 직원 다음 로그인 시 새 기기로 재등록.

Admin — 신규 RP 연동 (테넌트 온보딩)

  1. 콘솔에서 테넌트 등록 (code, rpId, origins) → public key + api secret 1회 노출.
  2. RP 는 Java client library 에 secret 주입, 프론트에 public key + JS SDK 배포.
  3. 운영 중 secret 유출 의심 시 rotate — 기존 secret 즉시 무효화.

On this page