-
Notifications
You must be signed in to change notification settings - Fork 0
Description
Description
-
Summary
보안 강화를 위해 Refresh Token Rotation(RTR) 정책을 도입하고, Redis를 활용하여 토큰의 수명 주기 및 로그아웃(Blacklist) 기능을 관리합니다. 기존의 단순 JWT 발급 방식에서 나아가, 탈취된 Refresh Token의 재사용을 방지하고 즉각적인 로그아웃 처리가 가능하도록 구현합니다. -
주요 작업 내용 (Tasks)
[ ] JWT Provider 로직 고도화
Access Token(단기)과 Refresh Token(장기) 생성 메서드 분리
토큰 유효성 검증 로직 강화
[ ] Token Service (비즈니스 로직) 구현
Rotation: 재발급 요청 시 기존 토큰 삭제 및 신규 토큰 발급 (RTR 적용)
Blacklist: 로그아웃 요청 시 Redis에서 해당 Refresh Token 삭제
Security: 이미 사용된(삭제된) 토큰으로 재요청 시 예외 처리
[ ] API 및 핸들러 연동
OAuth2SuccessHandler: 로그인 성공 시 Redis에 Refresh Token 저장
AuthController: 토큰 재발급(/reissue) 및 로그아웃(/logout) API 구현
-
기술 스택 (Tech Stack)
-Spring Boot 3.x
-Spring Security & OAuth2 Client
-Spring Data Redis
-JWT (JJWT) -
테스트 시나리오 (Acceptance Criteria)
(1)로그인: GitHub 로그인 성공 시 Access Token과 Refresh Token이 발급되며, Redis에 Refresh Token이 저장되어야 함.
(2)재발급(Rotation): /reissue 요청 시 기존 Refresh Token은 Redis에서 삭제되고, 새로운 토큰 쌍이 발급되어야 함.
(3)보안 검증: 이미 사용된(Rotation된) Refresh Token으로 재발급 시도 시 요청이 거부되어야 함.
(4)로그아웃: /logout 요청 시 Redis에서 해당 토큰이 즉시 삭제되어야 함.