From 4676f7acdd7bad27abbe28fc1370efe483543651 Mon Sep 17 00:00:00 2001 From: soyeon Park Date: Sat, 2 Jan 2021 00:32:26 +0900 Subject: [PATCH] Fix/token parsing error (#211) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix: token parsing error * refactor: 중복제거 --- .../java/com/yapp/crew/config/JwtUtils.java | 30 ++++++++----------- .../com/yapp/crew/service/SignInService.java | 2 +- .../com/yapp/crew/service/TokenService.java | 2 +- .../yapp/crew/service/WithdrawService.java | 2 +- 4 files changed, 16 insertions(+), 20 deletions(-) diff --git a/login-service/src/main/java/com/yapp/crew/config/JwtUtils.java b/login-service/src/main/java/com/yapp/crew/config/JwtUtils.java index 52a2d4c..ecf3705 100644 --- a/login-service/src/main/java/com/yapp/crew/config/JwtUtils.java +++ b/login-service/src/main/java/com/yapp/crew/config/JwtUtils.java @@ -1,5 +1,6 @@ package com.yapp.crew.config; +import com.yapp.crew.domain.errors.TokenRequiredException; import com.yapp.crew.domain.model.User; import io.jsonwebtoken.Claims; import io.jsonwebtoken.Jws; @@ -56,28 +57,21 @@ private Date generateExpirationDate(Date now) { return calendar.getTime(); } - public String getUserIdFromToken(String token) { - token = token.replace(prefix + " ", ""); - log.info("remove prefix token: " + token); - - String userId; + public long getUserIdFromToken(String token) { try { - final Claims claims = getClaimsFromToken(token); - userId = String.valueOf(claims.get("userId")); + final Claims claims = getClaimsFromToken(token).getBody(); + long userId = Long.parseLong(String.valueOf(claims.get("userId"))); log.info("userId from token: " + userId); + return userId; } catch (Exception e) { - userId = null; + throw new TokenRequiredException("[Auto Login Service] Token is required but wasn't sent"); } - return userId; } public Date getExpirationFromToken(String token) { - token = token.replace(prefix + " ", ""); - log.info("remove prefix token: " + token); - Date expiration; try { - final Claims claims = getClaimsFromToken(token); + final Claims claims = getClaimsFromToken(token).getBody(); expiration = claims.getExpiration(); log.info("expiration from token: " + expiration.toString()); } catch (Exception e) { @@ -86,14 +80,16 @@ public Date getExpirationFromToken(String token) { return expiration; } - private Claims getClaimsFromToken(String token) { - Claims claims; + private Jws getClaimsFromToken(String token) { + token = token.replace(prefix + " ", ""); + log.info("remove prefix token: " + token); + + Jws claims; try { claims = Jwts.parserBuilder() .setSigningKey(Keys.hmacShaKeyFor(secret.getBytes())) .build() - .parseClaimsJws(token) - .getBody(); + .parseClaimsJws(token); } catch (Exception e) { claims = null; } diff --git a/login-service/src/main/java/com/yapp/crew/service/SignInService.java b/login-service/src/main/java/com/yapp/crew/service/SignInService.java index 2a44160..b39836d 100644 --- a/login-service/src/main/java/com/yapp/crew/service/SignInService.java +++ b/login-service/src/main/java/com/yapp/crew/service/SignInService.java @@ -50,7 +50,7 @@ public UserAuthResponse signIn(LoginUserInfo loginUserInfo) { } public UserAuthResponse autoSignIn(String token) { - long userId = Long.parseLong(jwtUtils.getUserIdFromToken(token)); + long userId = jwtUtils.getUserIdFromToken(token); User user = getUserByUserId(userId) .orElseThrow(() -> new UserNotFoundException(userId)); diff --git a/login-service/src/main/java/com/yapp/crew/service/TokenService.java b/login-service/src/main/java/com/yapp/crew/service/TokenService.java index 7f7fb02..98650cb 100644 --- a/login-service/src/main/java/com/yapp/crew/service/TokenService.java +++ b/login-service/src/main/java/com/yapp/crew/service/TokenService.java @@ -29,7 +29,7 @@ public HttpHeaders setToken(User user) { public HttpHeaders refreshToken(User user, String token) { String refreshToken = null; if (jwtUtil.verifyToken(token)) { - refreshToken = token; + refreshToken = "Bearer " + token; } else { refreshToken = jwtUtil.createToken(user); } diff --git a/login-service/src/main/java/com/yapp/crew/service/WithdrawService.java b/login-service/src/main/java/com/yapp/crew/service/WithdrawService.java index faa3fb7..ce6d234 100644 --- a/login-service/src/main/java/com/yapp/crew/service/WithdrawService.java +++ b/login-service/src/main/java/com/yapp/crew/service/WithdrawService.java @@ -26,7 +26,7 @@ public WithdrawService(UserRepository userRepository, JwtUtils jwtUtils) { @Transactional public UserAuthResponse withdraw(String token) { - long userId = Long.parseLong(jwtUtils.getUserIdFromToken(token)); + long userId = jwtUtils.getUserIdFromToken(token); User user = getUserByUserId(userId) .orElseThrow(() -> new UserNotFoundException(userId));