diff --git a/src/main/java/org/runimo/runimo/auth/service/TokenRefreshService.java b/src/main/java/org/runimo/runimo/auth/service/TokenRefreshService.java index 5ec81f43..4511f531 100644 --- a/src/main/java/org/runimo/runimo/auth/service/TokenRefreshService.java +++ b/src/main/java/org/runimo/runimo/auth/service/TokenRefreshService.java @@ -21,6 +21,10 @@ public class TokenRefreshService { @Value("${jwt.refresh.expiration}") private Long refreshTokenExpiry; + public void putRefreshToken(String userId, String refreshToken) { + refreshTokenCache.put(userId, refreshToken, Duration.ofMillis(refreshTokenExpiry)); + } + public TokenPair refreshAccessToken(String refreshToken) { String userId; try { diff --git a/src/main/java/org/runimo/runimo/auth/service/apple/AppleLoginHandler.java b/src/main/java/org/runimo/runimo/auth/service/apple/AppleLoginHandler.java index ebed61cd..49096b4f 100644 --- a/src/main/java/org/runimo/runimo/auth/service/apple/AppleLoginHandler.java +++ b/src/main/java/org/runimo/runimo/auth/service/apple/AppleLoginHandler.java @@ -11,6 +11,7 @@ import org.runimo.runimo.auth.jwt.JwtTokenFactory; import org.runimo.runimo.auth.repository.SignupTokenRepository; import org.runimo.runimo.auth.service.EncryptUtil; +import org.runimo.runimo.auth.service.TokenRefreshService; import org.runimo.runimo.auth.service.dto.AuthResult; import org.runimo.runimo.auth.service.dto.AuthStatus; import org.runimo.runimo.auth.service.dto.TokenPair; @@ -28,6 +29,7 @@ public class AppleLoginHandler { private final AppleTokenVerifier appleTokenVerifier; private final JwtTokenFactory jwtTokenFactory; + private final TokenRefreshService tokenRefreshService; private final OAuthInfoRepository oAuthInfoRepository; private final SignupTokenRepository signupTokenRepository; private final EncryptUtil encryptUtil; @@ -60,6 +62,8 @@ public AuthResult validateAndLogin(final String authCode, final String verifier) } TokenPair tokenPair = jwtTokenFactory.generateTokenPair(oAuthInfo.get().getUser()); + tokenRefreshService.putRefreshToken(oAuthInfo.get().getUser().getPublicId(), + tokenPair.refreshToken()); return AuthResult.success(AuthStatus.LOGIN_SUCCESS, oAuthInfo.get().getUser(), tokenPair); } diff --git a/src/main/java/org/runimo/runimo/auth/service/kakao/KakaoLoginHandler.java b/src/main/java/org/runimo/runimo/auth/service/kakao/KakaoLoginHandler.java index 04a72129..2683d093 100644 --- a/src/main/java/org/runimo/runimo/auth/service/kakao/KakaoLoginHandler.java +++ b/src/main/java/org/runimo/runimo/auth/service/kakao/KakaoLoginHandler.java @@ -10,6 +10,7 @@ import org.runimo.runimo.auth.exceptions.UserJwtException; import org.runimo.runimo.auth.jwt.JwtTokenFactory; import org.runimo.runimo.auth.repository.SignupTokenRepository; +import org.runimo.runimo.auth.service.TokenRefreshService; import org.runimo.runimo.auth.service.apple.KakaoUserInfo; import org.runimo.runimo.auth.service.dto.AuthResult; import org.runimo.runimo.auth.service.dto.AuthStatus; @@ -28,6 +29,7 @@ public class KakaoLoginHandler { private final KakaoTokenVerifier kakaoTokenVerifier; private final OAuthInfoRepository oAuthInfoRepository; private final JwtTokenFactory jwtTokenFactory; + private final TokenRefreshService tokenRefreshService; private final SignupTokenRepository signupTokenRepository; /** @@ -51,6 +53,8 @@ public AuthResult validateAndLogin(final String rawToken) { } TokenPair tokenPair = jwtTokenFactory.generateTokenPair(oAuthInfo.get().getUser()); + tokenRefreshService.putRefreshToken(oAuthInfo.get().getUser().getPublicId(), + tokenPair.refreshToken()); return AuthResult.success(AuthStatus.LOGIN_SUCCESS, oAuthInfo.get().getUser(), tokenPair); } diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 3a1e2357..f87a1c70 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -98,9 +98,9 @@ spring: show-sql: true jwt: - expiration: 300000 + expiration: ${JWT_EXPIRATION:180000} refresh: - expiration: 3600000 + expiration: ${JWT_REFRESH_EXPIRATION:86400000} --- spring: @@ -119,9 +119,9 @@ spring: mode: never jwt: - expiration: 3600000 + expiration: ${JWT_EXPIRATION:6000000} refresh: - expiration: 604800000 + expiration: ${JWT_REFRESH_EXPIRATION:604800000} --- spring: