-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[SIX-256] feat : Refresh Token Rotation 기능 구현 #111
Conversation
Kudos, SonarCloud Quality Gate passed! |
var refreshTokenValue = tokenService.findRefreshTokenValue(refreshToken); | ||
|
||
if (refreshTokenValue.isEmpty()) { | ||
removeCookie(response); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
이 부분을 인터셉터로 빼보는 건 어떨까요!?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
오 저 부분때문에 코드 가독성이 떨어지는 것 아닐까 생각했었는데 좋은 아이디어 감사합니다~
리팩토링할 때 수정해보겠습니다!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
위에 참고해보시라고 했던 chainToken 은 한 번 살펴보도록 하겠습니다! 👍
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍
🖊️ 1. Changes
@GetMapping("/reissue-token")
추가🖼️ 2. Screenshot
❗️ 3. Issues
RTR
REF
😌 4. To Reviewer
사용자에게 전송해주는 리프레시 토큰은 UUID 형태로 사용합니다
전송받은 UUID를 KEY 값으로 레디스에서 불러오는 VALUE 는 deserialize 하여
RefreshToken
이라는 클래스로 사용하고 있습니다.RTR 기법에서는 리프레시 토큰은 재발급을 위해 한 번만 사용될 수 있습니다.
chainedToken
은 처음 발급됐을 때는NONE
값을 가지지만, 해당 리프레시 토큰이 새로운 리프레시 토큰 발급을 위해 사용되는 순간chainedToken
에는 새로 발급된 리프레시 토큰의 UUID가 저장됩니다. 이렇게 체인을 거는것을 token chain 이라고 하는데 키워드로 검색해보시면 좋을 것 같습니다. 현재 구현 수준에서는 하나의 체인만 가지도록 하였습니다.전체적인 코드 이해를 돕기위해 작동과정만 간단하게 적었습니다.
정상적인 상황
chainedToken
값이NONE
이라면 새로운 AT2, RT2 를 발급하여 클라이언트에게 응답하고 RT1 에 해당하는 VALUE 의chainedToken
값을 RT2 로 변경하여 레디스에 저장동일한 리프레시 토큰 재전송
chainedToken
값이NONE
이 아닌 RT2 이기 때문에 해당 리프레시 토큰은 이미 재발급에 사용됐음을 알 수 있음✅ 5. Plans
🙌 6. Checklist