Skip to content

[Feat] Refresh Token을 이용한 Access Token 재발급 구현 #59

Merged
rimeir merged 12 commits intodevelopfrom
feature/#56-token-reissue
May 6, 2025
Merged

[Feat] Refresh Token을 이용한 Access Token 재발급 구현 #59
rimeir merged 12 commits intodevelopfrom
feature/#56-token-reissue

Conversation

@rimeir
Copy link
Copy Markdown
Member

@rimeir rimeir commented May 3, 2025

📌 개요

  • 만료된 Access Token을 재발급받을 수 있도록 Refresh Token 기반 재발급 API를 구현했습니다.
  • Refresh Token을 활용한 Access Token 재발급 및 Rotation(회전) 로직을 구현하여, 만료된 토큰으로도 로그인 상태를 유지할 수 있도록 했습니다.
  • Refresh Token은 쿠키로 전달되어 서버에서 검증 후 새로운 Access Token을 발급하며, 이를 통해 사용자 경험과 보안성을 강화할 수 있습니다.

🚀 관련 이슈

✅ 변경 사항

image
  • 성공 응답
{
  "status": 200,
  "message": "토큰 재발급 성공",
  "data": {
    "grantType": "Bearer",
    "accessToken": "new_access_token",
    "role": "MEMBER"
  }
}
  • Access Token 재발급 API (POST /api/v1/auth/reissue) 추가
  • Rotation 방식을 적용하여 Refresh Token 갱신 후 재저장

📝 상세 내용

Refresh Token 저장 구조 설계

  • 로그인 성공 시 Refresh Token을 발급하고 DB에 저장
  • Refresh Token(Refresh)은 HttpOnly Cookie에 저장되어 클라이언트에 전달

Access Token 재발급 흐름

  • 클라이언트가 만료된 Access Token을 감지
  • POST /api/v1/auth/reissue 엔드포인트에 쿠키(Refresh)와 함께 요청
  • 서버는 해당 토큰을 파싱하여 사용자 식별 후 DB의 Refresh Token과 비교
  • 일치할 경우 새로운 Access Token 발급
  • 기존 Refresh Token은 갱신 후 DB에 업데이트 (Rotation 방식)

보안성 강화

  • 탈취된 토큰의 재사용 방지를 위해 Refresh Token Rotation 방식 적용
  • 만료된 토큰이나 저장되지 않은 토큰 요청 시 401 UNAUTHORIZED 에러 코드 반환
  • JwtException은 GlobalExceptionHandler에서 처리
  • 유효하지 않은 Refresh Token, 존재하지 않는 토큰, 권한 누락에 대한 예외 코드 세분화

통합 테스트

  • 정상 재발급 시 OK 응답 확인: accessToken, role 응답 확인
  • 잘못된 Refresh Token인 경우 예외 응답 확인: 잘못된 Refresh Token인 경우 401 UNAUTHORIZED

@rimeir rimeir added enhancement New feature or request backend labels May 3, 2025
@rimeir rimeir requested a review from Etwashoeren May 3, 2025 03:07
@rimeir rimeir self-assigned this May 3, 2025
@rimeir rimeir added this to PostDM May 3, 2025
@rimeir rimeir changed the title [Feature] Refresh Token을 이용한 Access Token 재발급 구현 [Feat] Refresh Token을 이용한 Access Token 재발급 구현 May 3, 2025
Copy link
Copy Markdown
Contributor

@Etwashoeren Etwashoeren left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

확인 완료했습니다!!

@rimeir rimeir merged commit 77b97c1 into develop May 6, 2025
@github-project-automation github-project-automation Bot moved this to Done in PostDM May 6, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backend enhancement New feature or request

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

2 participants