Identity Context 정의서

Context 정보

항목 내용
Context명 인증
영문명 Identity
도메인 분류 Supporting
담당 팀 Backend Team
작성일 2025-12-28

개요

Identity Context는 FanPulse 서비스의 사용자 인증 및 계정 관리를 담당합니다. 이메일/비밀번호 기반 인증과 OAuth(Google) 소셜 로그인을 지원하며, JWT 토큰 기반으로 세션을 관리합니다. 모든 다른 Context의 인증 제공자 역할을 합니다.

핵심 책임

  1. 사용자 등록 및 관리: 회원가입, 프로필 수정, 비밀번호 변경
  2. 인증 처리: 로그인, 로그아웃, 토큰 발급/갱신/폐기
  3. OAuth 연동: Google 소셜 로그인 처리
  4. 사용자 설정 관리: 테마, 언어, 푸시 알림 설정

Ubiquitous Language

한글 영문 정의
사용자 User 서비스에 가입한 회원
인증 토큰 AuthToken JWT 기반 액세스/리프레시 토큰
OAuth 계정 OAuthAccount 소셜 로그인으로 연동된 외부 계정
사용자 설정 UserSettings 개인화 설정 (테마, 언어, 알림)
비밀번호 해시 PasswordHash 암호화된 비밀번호
세션 Session 로그인 상태가 유지되는 기간

Aggregate 목록

Aggregate 설명 Root Entity
User 사용자 계정 및 인증 정보 관리 User
AuthToken 인증 토큰 발급 및 관리 AuthToken
UserSettings 사용자 개인화 설정 관리 UserSettings

Aggregate 상세

User Aggregate

classDiagram
    class User {
        <<Aggregate Root>>
        +UserId id
        +Email email
        +Username username
        +PasswordHash passwordHash
        +CreatedAt createdAt
        +register(command: RegisterCommand): User
        +updateProfile(command: UpdateProfileCommand): void
        +changePassword(command: ChangePasswordCommand): void
        +linkOAuthAccount(account: OAuthAccount): void
        +delete(): void
    }

    class UserId {
        <<Value Object>>
        +UUID value
    }

    class Email {
        <<Value Object>>
        +String value
        +validate(): Boolean
    }

    class Username {
        <<Value Object>>
        +String value
        +validate(): Boolean
    }

    class PasswordHash {
        <<Value Object>>
        +String value
        +matches(rawPassword: String): Boolean
    }

    class OAuthAccount {
        <<Entity>>
        +OAuthAccountId id
        +OAuthProvider provider
        +String providerUserId
        +Email email
        +CreatedAt createdAt
    }

    class OAuthProvider {
        <<Value Object>>
        GOOGLE
    }

    User *-- UserId
    User *-- Email
    User *-- Username
    User *-- PasswordHash
    User "1" -- "0..*" OAuthAccount
    OAuthAccount *-- OAuthProvider

불변식 (Invariants):

  1. 이메일은 고유해야 한다
  2. 닉네임은 2~50자 사이여야 한다
  3. 비밀번호는 최소 8자, 영문/숫자 포함해야 한다
  4. OAuth 계정은 동일 provider당 하나만 연동 가능

핵심 행위: