|
if (jwtService.isTokenExpired(refreshTokenValue)) { |
|
// 엑세스 토큰 체크 |
|
if (jwtService.validateToken(accessTokenValue)) { |
|
// 토큰이 유효하면 인증 정보를 설정 |
|
SecurityContextHolder.getContext().setAuthentication(jwtService.getAuthentication(accessTokenValue)); |
|
} |
|
} else { |
|
log.info("토큰이 만료 되었습니다"); |
|
log.error("토큰 만료 에러"); |
|
CookieUtils.setCookie(jwtProperties.cookieName(), null, 0, response); |
|
throw new ValidationException(EXPIRED_TOKEN); |
|
} |
1. 83번 줄의 안쪽 If문, jwtService.validateToken(accessTokenValue)) 의 결과가 false일 때 바깥 쪽 else문이 실행되지 않을 것 같습니다.
리프레시 토큰은 유효 && 액세스 토큰은 만료인 상황에서 토큰 만료 response가 발생하는 지 확인 부탁드립니다.
2. 엄밀히 따지면, 인증은 refreshToken이 만료되었을 때도 성공해야 한다고 생각합니다.
refreshToken 의 만료 기간은 accessToken의 갱신할 수 있는 기간을 의미하기 때문입니다.
실 서비스에서는 refreshToken의 만료 기간이 길 테니 심각한 이슈는 아닙니다.
ex)
refreshToken 만료 기간: 10분
accessToken 만료 기간: 4분
a. 0분에 refreshToken 발급. 유효 기간: 0분~10분
b. 9분에 refreshToken 이용해서 accessToken 재발급
c. accessToken의 유효 기간: 9분~13분(+4분)
d. 11분의 상황:
refreshToken: 10분 초과해서 만료
accessToken: 13분에 만료되므로 아직 사용 가능
=> 이 때는 인증이 성공해야 합니다.
3. jwtService.isTokenExpired(refreshTokenValue) 는 .isTokenValid()로 이름을 바꾸면 코드를 이해하기 더 좋을 것 같습니다.
-
.isTokenExpired()의 예상 동작
토큰이 만료되었을 때 true를, 만료되지 않았을 때(유효할 때) false를 return할 것으로 기대됩니다. 함수 이름인 is token expired?의 의미가 토큰이 만료되었는가?이기 때문입니다.
-
.isTokenExpired()의 실제 동작
토큰 검증에 성공하면 true를, 실패하면 false를 반환합니다.
-
결론
함수 이름을 isTokenValid()로 변경하면 함수의 예상 결과와 실제 결과가 일치하게 됩니다.
ConnectingStar-Back/src/main/java/connectingstar/tars/auth/filter/JwtAuthenticationFilter.java
Lines 81 to 92 in 452443d
1. 83번 줄의 안쪽 If문,
jwtService.validateToken(accessTokenValue))의 결과가false일 때 바깥 쪽 else문이 실행되지 않을 것 같습니다.리프레시 토큰은 유효 && 액세스 토큰은 만료인 상황에서 토큰 만료 response가 발생하는 지 확인 부탁드립니다.2. 엄밀히 따지면, 인증은
refreshToken이 만료되었을 때도 성공해야 한다고 생각합니다.refreshToken의 만료 기간은accessToken의 갱신할 수 있는 기간을 의미하기 때문입니다.실 서비스에서는
refreshToken의 만료 기간이 길 테니 심각한 이슈는 아닙니다.ex)
refreshToken만료 기간: 10분accessToken만료 기간: 4분a. 0분에
refreshToken발급. 유효 기간: 0분~10분b. 9분에
refreshToken이용해서accessToken재발급c.
accessToken의 유효 기간: 9분~13분(+4분)d. 11분의 상황:
refreshToken: 10분 초과해서 만료accessToken: 13분에 만료되므로 아직 사용 가능=> 이 때는 인증이 성공해야 합니다.
3.
jwtService.isTokenExpired(refreshTokenValue)는.isTokenValid()로 이름을 바꾸면 코드를 이해하기 더 좋을 것 같습니다..isTokenExpired()의 예상 동작토큰이 만료되었을 때
true를, 만료되지 않았을 때(유효할 때)false를 return할 것으로 기대됩니다. 함수 이름인is token expired?의 의미가토큰이 만료되었는가?이기 때문입니다..isTokenExpired()의 실제 동작토큰 검증에 성공하면
true를, 실패하면false를 반환합니다.결론
함수 이름을
isTokenValid()로 변경하면 함수의 예상 결과와 실제 결과가 일치하게 됩니다.