목적 – OrderHub 플랫폼의 회원 인증·인가, 토큰 발급/검증, 세션 관리를 담당하는 핵심 서비스입니다. 사용자 등록·로그인·권한 검증 API를 제공하고, JWT + RTR(Refresh Token Rotation) 전략으로 보안을 강화합니다.
| 영역 | 기능 |
|---|---|
| 회원 | 회원가입, 로그인, 프로필 조회, 중복검사 |
| 인증 | Access/Refresh JWT 발급, TTL·재발급, RTR 기반 토큰 로테이션 관리 |
| 인가 | 역할(Role)·권한(Permission) 기반 제한, API 게이트웨이와 연동 |
| 보안 정책 | 비밀번호 해싱(BCrypt) |
| 이벤트 | member-created, role-updated 등 Kafka 발행 → Admin/Notification 서비스가 구독 |
| 레이어 | 기술 |
|---|---|
| Runtime | Java 21, Spring Boot 3.4.4 |
| Security | Spring Security |
| Token | JWT |
| Persistence | PostgreSQL, Spring Data JPA |
| Messaging | Kafka |
| DevOps | Gradle, Docker |
| Testing | JUnit 5, Mockito |
Client ──────▶ Auth API ──────▶ AuthService ──────▶ Member/User Domain
│
JWT Provider
│
▼
PostgreSQL
▲
Kafka ◀──── events ─────▶ 다른 서비스
class Member {
+UUID id
+String username
+String password
+String realName
+String tel
+MemberRole role
+MemberStatus status
+Instant createdAt
+Instant updatedAt
+updateMemberStatus()
+updateMemberRole()
+updateMemberPassword()
+deleteMember()
}
class MemberRole {
<<enum>>
MANAGER
BOSS
ADMIN
}
class MemberStatus {
<<enum>>
ACTIVE
SUSPENDED
DELETED
PENDING
EXPIRED
}
class TokenStatus {
<<enum>>
AUTHENTICATED
EXPIRED
INVALID
}
class RedisTokenStore {
<<redis>>
+saveRefreshToken(memberId, token)
+getRefreshToken(memberId)
+deleteTokens(memberId)
+blacklistToken(token, expirationMillis)
+isAccessTokenBlacklisted(token)
}
Member --> MemberRole
Member --> MemberStatus
Member "1" --> "1" RedisTokenStore : tokens stored in Redis
##🔌 REST API 개요
Base path
/api/auth
Command API
| 기능 | 메서드 | 경로 |
|---|---|---|
| 회원가입 | POST | /signup |
| 로그인 | POST | /login |
| 로그아웃 | POST | /logout |
| 역할 변경 | PUT | /members/role |
| 상태 변경 | PUT | /members/status |
| 비밀번호 변경 | PUT | /members/password |
| 회원 삭제 | DELETE | /members/{id} |
Query API
| 기능 | 메서드 | 경로 |
|---|---|---|
| 전체 조회 | GET | / |
| 내 정보 조회 | GET | /me |
| UUID 조회 | GET | /{id} |
| username 조회 | GET | /username/{username} |
| 상태별 조회 | GET | /status/{status} |
| 역할별 조회 | GET | /role/{role} |