mirror of
https://github.com/ktds-dg0501/kt-event-marketing.git
synced 2026-06-13 16:59:13 +00:00
User 서비스 내부 시퀀스 다이어그램 개선
- 회원가입: 사업자번호 암호화 위치 명시, 성능 지표 추가, 에러 코드 표준화 (USER_001, USER_002) - 로그인: 비동기 처리 설명 추가, Rate Limiting 보안 강화, 성능 목표 추가, 에러 코드 표준화 (AUTH_001) - 프로필수정: 트랜잭션 범위 명확화, Optimistic Locking 추가, 동시성 제어, 에러 코드 표준화 (USER_003~005) - 로그아웃: API Gateway 연계 시나리오, 로그아웃 이벤트 발행, 성능 목표 추가, 에러 코드 표준화 (AUTH_002) - .gitignore 추가: .npm-global 및 기타 임시 파일 제외 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -36,7 +36,7 @@ deactivate JwtProvider
|
||||
|
||||
alt JWT 토큰 무효
|
||||
AuthService --> Controller: throw InvalidTokenException\n("유효하지 않은 토큰입니다")
|
||||
Controller --> Client: 401 Unauthorized\n{"error": "유효하지 않은 토큰입니다"}
|
||||
Controller --> Client: 401 Unauthorized\n{"code": "AUTH_002",\n"error": "유효하지 않은 토큰입니다"}
|
||||
deactivate AuthService
|
||||
deactivate Controller
|
||||
|
||||
@@ -70,6 +70,14 @@ else JWT 토큰 유효
|
||||
- 만료되지 않은 JWT 토큰을 강제로 무효화
|
||||
- Redis에 토큰을 Blacklist에 추가 (TTL: 남은 만료 시간)
|
||||
- API Gateway에서 Blacklist 확인
|
||||
|
||||
**API Gateway 연계 시나리오**
|
||||
1. 로그아웃: AuthService가 Blacklist에 토큰 추가
|
||||
2. 후속 API 요청: API Gateway가 Blacklist 확인
|
||||
- Redis GET jwt:blacklist:{token}
|
||||
- 존재하면: 401 Unauthorized 즉시 반환
|
||||
- 존재하지 않으면: 백엔드 서비스로 라우팅
|
||||
3. 만료 시간 도달: Redis TTL 만료로 자동 삭제
|
||||
end note
|
||||
|
||||
AuthService -> JwtProvider: getRemainingExpiration(token)
|
||||
@@ -85,9 +93,26 @@ else JWT 토큰 유효
|
||||
deactivate Redis
|
||||
end
|
||||
|
||||
== 4단계: 응답 반환 ==
|
||||
== 4단계: 로그아웃 이벤트 발행 (선택적) ==
|
||||
|
||||
AuthService -> AuthService: 로그아웃 성공 로그 기록\n(userId, timestamp)
|
||||
note right of AuthService
|
||||
**로그아웃 로깅 및 이벤트**
|
||||
- 감사 로그 기록: userId, timestamp, IP
|
||||
- 이벤트 발행: LOGOUT_SUCCESS
|
||||
- 분석 데이터 수집: 세션 지속 시간, 활동 통계
|
||||
end note
|
||||
|
||||
AuthService -> AuthService: 로그아웃 성공 로그 기록\n(userId, timestamp, sessionDuration)
|
||||
|
||||
AuthService ->> AuthService: publishEvent(LOGOUT_SUCCESS)
|
||||
note right of AuthService
|
||||
**이벤트 활용**
|
||||
- 비동기 이벤트 처리
|
||||
- 분석 시스템 연동
|
||||
- 감사 로그 저장소 전송
|
||||
end note
|
||||
|
||||
== 5단계: 응답 반환 ==
|
||||
|
||||
AuthService --> Controller: LogoutResponse\n(success: true)
|
||||
deactivate AuthService
|
||||
@@ -101,14 +126,30 @@ note over Controller, Redis
|
||||
- JWT 토큰 Blacklist: 만료 전 토큰 강제 무효화
|
||||
- 멱등성 보장: 중복 로그아웃 요청에 안전
|
||||
- 세션 완전 삭제: Redis에서 세션 정보 제거
|
||||
- 감사 로그: userId, timestamp, IP, sessionDuration 기록
|
||||
|
||||
**API Gateway 연계**
|
||||
- Blacklist 확인: GET jwt:blacklist:{token}
|
||||
- 존재 시: 401 Unauthorized 즉시 반환
|
||||
- TTL 자동 관리: 만료 시간 도달 시 자동 삭제
|
||||
|
||||
**클라이언트 측 처리**
|
||||
- 프론트엔드: LocalStorage 또는 Cookie에서 JWT 토큰 삭제
|
||||
- 로그인 화면으로 리다이렉트
|
||||
- 모든 인증 헤더 제거
|
||||
|
||||
**성능 최적화**
|
||||
**성능 목표**
|
||||
- Redis 삭제 연산: O(1) 시간 복잡도
|
||||
- 응답 시간: 0.1초 이내
|
||||
- 평균 응답 시간: 0.1초 이내
|
||||
- P95 응답 시간: 0.2초 이내
|
||||
|
||||
**이벤트 처리**
|
||||
- LOGOUT_SUCCESS 이벤트 발행 (비동기)
|
||||
- 감사 로그 저장소 전송
|
||||
- 분석 데이터 수집
|
||||
|
||||
**에러 코드**
|
||||
- AUTH_002: JWT 토큰 무효
|
||||
end note
|
||||
|
||||
@enduml
|
||||
|
||||
Reference in New Issue
Block a user