Commit 45bfcfd
authored
�feat: JWT 기능 구현 (#30)
* feat(jwt): Add JJWT dependencies
- jjwt-api, jjwt-impl, jjwt-jackson 의존성 추가 (버전 0.12.6)
* feat(jwt): JWT 처리용 인터페이스 추가
- 토큰 생성을 위한 JwtGenerator 인터페이스 추가
- 토큰 파싱을 위한 JwtParser 인터페이스 추가
- 토큰 검증을 위한 JwtValidator 인터페이스 추가
- JWT 작업 통합을 위한 JwtUseCase 인터페이스 추가
* feat(jwt): JWT 처리용 클래스 구현 및 시크릿 키 관리 설정 추가
- JwtGenerator, JwtParser, JwtValidator, JwtUseCase 인터페이스의 구현체 추가
- HS256 알고리즘을 사용
- SecretKey 관리를 JwtConfig로 통합
- Refresh token을 Redis에 저장하는 작업은 미완성
* feat(TokenType): 토큰 타입 구분을 위한 ENUM 추가
- 작동 시간 ms 단위 저장 및 s 단위 반환 기능 구현
* feat(auth): EncodedToken 레코드 추가
- JWT 토큰의 Encoded Value를 표현하기 위한 레코드 클래스 추가
* refactor(UserRole): 패키지 이동
* feat(JwtGenerator): HmacJwtGenerator 개선 및 EncodedToken 반환 방식으로 변경
- JWT 생성 로직 수정:
- 기존 String 반환 방식에서 EncodedToken 객체 반환 방식으로 변경
- TokenType을 사용하여 토큰 유효 기간 동적으로 설정 가능 (ACCESS_TOKEN, REFRESH_TOKEN 구분)
- 클레임(Claims) 생성 방식 개선:
- buildClaims 메서드로 사용자 ID와 역할(role) 추가
* feat(Jwt): 토큰 관리 방식을 String에서 EncodedToken으로 변경
* feat(RefreshToken): Redis 기반 RefreshToken 관리 기능 구현
- RefreshToken 엔티티 추가:
- @RedisHash 어노테이션으로 Redis에 저장
- userId(@id)를 Redis 키로 사용하여 유저별 고유 RefreshToken 관리
- TTL(Time-to-Live) 설정: 7일
- accessToken 갱신 메서드 추가
- 매니저 주요 기능:
- AccessToken으로 RefreshToken 조회
- RefreshToken 저장
- RefreshToken 삭제 (로그아웃 구현 예정)
* feat(JwtRefresher): AccessToken 갱신 로직 추가
- RefreshTokenManager를 통해 RefreshToken 조회
- validateToken 메서드로 RefreshToken 검증
- JwtParser를 통해 AccessToken의 Claims 정보 추출
- generateAccessToken 메서드로 새로운 AccessToken 생성 및 갱신
- 갱신된 RefreshToken을 RefreshTokenManager를 통해 저장
* feat(Jwt): JWT 통합 관리 기능 추가
- 주요 로직:
- JwtGenerator를 통해 AccessToken 및 RefreshToken 생성
- JwtValidator로 토큰 유효성 검증:
- 유효하지 않은 경우 JwtRefresher를 통해 AccessToken 갱신
- JwtParser로 클레임 정보 추출
* feat(GenerateTokensOnLogin): 로그인 시 AccessToken 및 RefreshToken 생성 로직 구현
* style: delete unused import
* fix(jacocoPattern): Jwt -> jwt 오타 수정
* fix(jacocoPattern): *jwt* -> jwt/* 수정
* feat(TokenType): token period 타입 변경
- long to int
* fix(jacocoPattern): **/jwt/* -> **/jwt/**
* style: 마지막 라인 개행1 parent 37b08bb commit 45bfcfd
File tree
22 files changed
+439
-2
lines changed- src/main
- java/com/somemore/auth/jwt
- config
- domain
- generator
- parser
- refresh
- domain
- manager
- refresher
- repository
- service
- command
- usecase
- command
- validator
- resources
22 files changed
+439
-2
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
48 | 48 | | |
49 | 49 | | |
50 | 50 | | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
51 | 55 | | |
52 | 56 | | |
53 | 57 | | |
| |||
105 | 109 | | |
106 | 110 | | |
107 | 111 | | |
108 | | - | |
109 | | - | |
| 112 | + | |
| 113 | + | |
110 | 114 | | |
111 | 115 | | |
112 | 116 | | |
| |||
Lines changed: 18 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
Lines changed: 4 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
Lines changed: 19 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
Lines changed: 44 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
Lines changed: 8 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
Lines changed: 24 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
Lines changed: 34 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
0 commit comments