Browse Source

refresh token 요청시 token 자체 검증만 진행

pull/12/head
지대한 11 months ago
parent
commit
38d210acd3
  1. 11
      pav-server/src/main/java/com/palnet/biz/api/acnt/jwt/service/JwtService.java
  2. 5
      pav-server/src/main/java/com/palnet/biz/api/acnt/jwt/utils/JwtTokenUtil.java
  3. 25
      pav-server/src/main/java/com/palnet/biz/jpa/repository/pty/PtyCstmrQueryRepository.java

11
pav-server/src/main/java/com/palnet/biz/api/acnt/jwt/service/JwtService.java

@ -15,6 +15,7 @@ import com.palnet.comn.code.ErrorCode;
import com.palnet.comn.exception.CustomException; import com.palnet.comn.exception.CustomException;
import com.palnet.comn.utils.EncryptUtils; import com.palnet.comn.utils.EncryptUtils;
import com.palnet.comn.utils.HttpUtils; import com.palnet.comn.utils.HttpUtils;
import io.jsonwebtoken.Claims;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
@ -217,12 +218,22 @@ public class JwtService {
* @return * @return
*/ */
public JwtRsModel findRefreshtoken(int cstmrSno, String refreshToken) throws Exception { public JwtRsModel findRefreshtoken(int cstmrSno, String refreshToken) throws Exception {
// refresh 토큰 검증 - DB에서 저장한 refresh token 비교 - 최근 로그인한 정보만 가지고 있음
/*
JwtUserModel userDetails = query.findRefreshtoken(cstmrSno, refreshToken); JwtUserModel userDetails = query.findRefreshtoken(cstmrSno, refreshToken);
if (userDetails == null) { if (userDetails == null) {
return null; return null;
} }
*/
// refresh 토큰 검증 - refresh token의 유효성만 판단.
Claims claims = jwtTokenUtil.getAllClaimsFromToken(refreshToken);
Integer cstmrSnoByRefreshToken = claims.get("cstmrSno", Integer.class);
if(cstmrSnoByRefreshToken != cstmrSno) return null;
JwtUserModel userDetails = query.findByIdForrefreshToken(cstmrSno);
String createAccessToken = jwtTokenUtil.generateToken(userDetails); String createAccessToken = jwtTokenUtil.generateToken(userDetails);
String createRefreshToken = jwtTokenUtil.generateRefreshToken(userDetails); String createRefreshToken = jwtTokenUtil.generateRefreshToken(userDetails);

5
pav-server/src/main/java/com/palnet/biz/api/acnt/jwt/utils/JwtTokenUtil.java

@ -51,15 +51,16 @@ public class JwtTokenUtil implements Serializable {
} }
//for retrieveing any information from token we will need the secret key //for retrieveing any information from token we will need the secret key
private Claims getAllClaimsFromToken(String token) { public Claims getAllClaimsFromToken(String token) {
return Jwts.parser().setSigningKey(secret).parseClaimsJws(token).getBody(); return Jwts.parser().setSigningKey(secret).parseClaimsJws(token).getBody();
} }
//check if the token has expired //check if the token has expired
// 토큰이 만료되었는지 확인한다. // 토큰이 만료되었는지 확인한다.
private Boolean isTokenExpired(String token) { private Boolean isTokenExpired(String token) {
final Date expiration = getExpirationDateFromToken(token); final Date expiration = getExpirationDateFromToken(token);
// log.debug(">>>" + expiration); // log.debug(">>>" + expiration);getExpirationDateFromToken
return expiration.before(new Date()); return expiration.before(new Date());
} }

25
pav-server/src/main/java/com/palnet/biz/jpa/repository/pty/PtyCstmrQueryRepository.java

@ -238,6 +238,31 @@ public class PtyCstmrQueryRepository {
} }
} }
public JwtUserModel findByIdForrefreshToken(int cstmrSno) {
QPtyCstmrBas basEntity = QPtyCstmrBas.ptyCstmrBas;
BooleanBuilder builder = new BooleanBuilder();
builder.and(basEntity.cstmrSno.eq(cstmrSno));
PtyCstmrBas entity = query.select(basEntity)
.from(basEntity)
.where(builder)
.fetchFirst();
if (entity != null) {
JwtUserModel model = new JwtUserModel();
model.setAuth(entity.getAuthId());
model.setUserId(entity.getUserId());
model.setCstmrSno(entity.getCstmrSno());
model.setCstmrStatusCd(entity.getCstmrStatusCd());
model.setUserPswd(entity.getUserPswd());
return model;
} else {
return null;
}
}
public List<AnctCstmerRlModel> list(int cstmrSno) { public List<AnctCstmerRlModel> list(int cstmrSno) {
QPtyCstmrBas bas = QPtyCstmrBas.ptyCstmrBas; QPtyCstmrBas bas = QPtyCstmrBas.ptyCstmrBas;
QPtyCstmrDtl dtl = QPtyCstmrDtl.ptyCstmrDtl; QPtyCstmrDtl dtl = QPtyCstmrDtl.ptyCstmrDtl;

Loading…
Cancel
Save