-
Notifications
You must be signed in to change notification settings - Fork 0
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
[FEAT/#31] 토큰 Refresh API 구현 #32
base: dev
Are you sure you want to change the base?
Conversation
AuthenticationTokenInfo -> Command로 변환하여 Usecase에 전달합니다.
jwtAuthRefreshTokenProvider에서 parse시 검증이 진행됩니다. (추가 검증 불필요)
|
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.
리뷰 한 번 확인부탁드립니다! 그리고 /refresh 토큰 재발급 로직을 컨트롤러에서 구현하면 security 경로 설정도 필요할 것 같은데 이 부분도 확인 부탁드려요!
String renewedAccessToken = jwtAuthAccessTokenProvider.generate(customAuthentication); | ||
String renewedRefreshToken = jwtAuthRefreshTokenProvider.generate(renewedAccessToken); |
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.
p5
설명적 변수 너무 좋은 것 같네요!
@@ -74,4 +74,18 @@ public ResponseEntity<BaseResponse<?>> authenticateSocialAuthInfoFromApp( | |||
AuthResponse.AuthenticateSocialAuthInfoForApp.of( | |||
tokenInfo.accessToken(), tokenInfo.refreshToken())); | |||
} | |||
|
|||
@Override | |||
@PostMapping("/refresh") |
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.
p2
재발급 요청에서도 web, app에 따라 API가 분리되어야 할 것 같습니다!(로그인 참고)
웹의 경우 refresh token은 Cookie(httpOnly)로 내려주기로하고, 앱의 경우에는 body에 내려주기로했기 때문에 분리되어야 할 것 같아요!
public record AuthenticateSocialAuthInfo(String accessToken, String refreshToken) { | ||
public static AuthenticateSocialAuthInfo of(String accessToken, String refreshToken) { | ||
return new AuthenticateSocialAuthInfo(accessToken, refreshToken); | ||
} | ||
} | ||
|
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.
p3
아마 오빠가 헷갈린다고한게 제가 web, app따로 분리해두어서 그런 것 같은데 이게 그 refresh token 수신 방법이 웹과 앱이 구분되어 있어서 인 것 같습니다! 위에 남긴 리뷰 확인 한 번 부탁드립니다!
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.
고생하셨어요!! :)
확인해보시고 성은이가 남긴 리뷰와 중복되는 내용이 있다면 바로 성은이 리뷰 링크 남겨주시고 Resolve 처리해주시면 감사하겠습니다!
++
Refresh Token에 대해서 "While URL 추가" 등과 같이 별도 Filter 처리가 필요할 것으로 보이는데 PR 변경 내용에선 찾을 수가 없어서요!!
또한 로그인과 동일하게 Web/Native App 환경에 따른 분리가 필요할텐데 괜찮을까요?!
- Web
- ATK 발급 : Body
- ATK 관리 : Header
- RTK 발급 : Cookie
- RTK 관리 : Cookie
- App
- ATK 발급 : Body
- ATK 관리 : Header
- RTK 발급 : Body
- RTK 관리 : Local Storage & Body(재발급 요청 시)
혹시 이유가 있나요?!!
jwtAuthRefreshTokenProvider.parse(refreshToken); | ||
CustomAuthentication customAuthentication = | ||
jwtAuthAccessTokenProvider.parse(command.accessToken()); |
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.
P5
로직 내부 프로세스에 따라 개행이 된다면 더 보기 편할 것 같아요!!
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.
@Override
public AuthenticateTokenInfo refresh(AuthenticateTokenInfo command) {
String refreshToken = command.refreshToken();
jwtAuthRefreshTokenProvider.parse(refreshToken);
CustomAuthentication customAuthentication = jwtAuthAccessTokenProvider.parse(command.accessToken());
String renewedAccessToken = jwtAuthAccessTokenProvider.generate(customAuthentication);
String renewedRefreshToken = jwtAuthRefreshTokenProvider.generate(renewedAccessToken);
return AuthenticateTokenInfo.of(renewedAccessToken, renewedRefreshToken);
}
Related Issue 🚀
Work Description ✏️
PR Point 📸
이 전체적인 로직입니다.
성은이가 만들어놓은 AuthenticateTokenInfo 랑 AuthenticationTokenInfo가 헷갈려서 착오가 있을 수 있지만..
혹시 오류 있다면 리뷰로 달아주시면 감사하겠습니다 !