From bc5fcbd81c6d6dd0068cf72312455ae809e1d4bf Mon Sep 17 00:00:00 2001 From: windeer9 Date: Thu, 26 Oct 2023 15:46:07 +0900 Subject: [PATCH] refact: token refresh logic --- .../login/util/UserAuthenticationEntryPoint.java | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/server/src/main/java/com/green/greenearthforus/login/util/UserAuthenticationEntryPoint.java b/server/src/main/java/com/green/greenearthforus/login/util/UserAuthenticationEntryPoint.java index f48a9c8..60d6d0f 100644 --- a/server/src/main/java/com/green/greenearthforus/login/util/UserAuthenticationEntryPoint.java +++ b/server/src/main/java/com/green/greenearthforus/login/util/UserAuthenticationEntryPoint.java @@ -25,15 +25,19 @@ public void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException authenticationException) throws IOException{ Exception exception = (Exception) request.getAttribute("exception"); + + String jws = ""; + String refresh = ""; + if(request.getHeader("Authorization") != null && !request.getHeader("Authorization").isEmpty()) { - String jws = request.getHeader("Authorization").replace("Bearer ", ""); + jws = request.getHeader("Authorization").replace("Bearer ", ""); String base64EncodedSecretKey = jwtTokenizer.encodeBase64SecretKey(jwtTokenizer.getSecretKey()); if (isAccessTokenExpired(request)) { if (request.getHeader("Refresh") != null && !request.getHeader("Refresh").isEmpty()) { if (isRefreshTokenExpired(request)) { Claims accessClaims = jwtTokenizer.getClaims(jws, base64EncodedSecretKey).getBody(); jws = jwtTokenizer.generateAccessToken(accessClaims, accessClaims.getSubject(), jwtTokenizer.getTokenExpiration(jwtTokenizer.getAccessTokenExpirationMinutes()), base64EncodedSecretKey); - String refresh = jwtTokenizer.generateRefreshToken(accessClaims.getSubject(), jwtTokenizer.getTokenExpiration(jwtTokenizer.getRefreshTokenExpirationMinutes()), base64EncodedSecretKey); + refresh = jwtTokenizer.generateRefreshToken(accessClaims.getSubject(), jwtTokenizer.getTokenExpiration(jwtTokenizer.getRefreshTokenExpirationMinutes()), base64EncodedSecretKey); response.setHeader("Authorization", "Bearer " + jws); response.setHeader("Refresh", refresh); } else { @@ -47,7 +51,7 @@ public void commence(HttpServletRequest request, HttpServletResponse response, } else { Claims accessClaims = jwtTokenizer.getClaims(jws, base64EncodedSecretKey).getBody(); jws = jwtTokenizer.generateAccessToken(accessClaims, accessClaims.getSubject(), jwtTokenizer.getTokenExpiration(jwtTokenizer.getAccessTokenExpirationMinutes()), base64EncodedSecretKey); - String refresh = jwtTokenizer.generateRefreshToken(accessClaims.getSubject(), jwtTokenizer.getTokenExpiration(jwtTokenizer.getRefreshTokenExpirationMinutes()), base64EncodedSecretKey); + refresh = jwtTokenizer.generateRefreshToken(accessClaims.getSubject(), jwtTokenizer.getTokenExpiration(jwtTokenizer.getRefreshTokenExpirationMinutes()), base64EncodedSecretKey); response.setHeader("Authorization", "Bearer " + jws); response.setHeader("Refresh", refresh); } @@ -56,12 +60,12 @@ public void commence(HttpServletRequest request, HttpServletResponse response, ErrorResponder.sendErrorResponse(response, HttpStatus.UNAUTHORIZED); - logExceptionMessage(authenticationException, exception); + logExceptionMessage(authenticationException, exception, jws, refresh); } - private void logExceptionMessage(AuthenticationException authException, Exception exception){ + private void logExceptionMessage(AuthenticationException authException, Exception exception, String access, String refresh){ String message = exception != null ? exception.getMessage() : authException.getMessage(); - log.warn("Unauthorized error happend: {}", message + " contain new token."); + log.warn("Unauthorized error happend: {}", message + "\""+ access + "\"" + refresh); } public boolean isAccessTokenExpired(HttpServletRequest request){