리프레시토큰
53
작성한 질문수 11
안녕하세요 강의 잘보고있습니다.
현재 엑세스토큰이 만료되면 다시 발급받는데
만약에 리프레시 토큰이 만료되면
어떻게 처리가 되고있는지 이해가 좀 안갑니다 ㅠ
답변 1
0
Access Token(AT)과 Refresh Token(RT)
APIRefreshController에서 Access Token의 갱신 작업을 하고 있는데요.
AT가 입장권, RT가 교환권이므로
교환권이 만료되었다는 얘기는 결국 새로 로그인해야 한다는 의미가 됩니다.
질문하신 내용이 RT이 만료된 상황에 대한 것이라면 -- 새로 로그인을 유도하는게 맞습니다.
서버에서는 RT를 확인하는 부분입니다.
Map<String, Object> claims = JWTUtil.validateToken(refreshToken);
여기서 JWTUtil에 있는 validateToken( )은 예외를 발생시킵니다.
public static Map<String, Object> validateToken(String token) {
Map<String, Object> claim = null;
try{
SecretKey key = Keys.hmacShaKeyFor(JWTUtil.key.getBytes("UTF-8"));
claim = Jwts.parserBuilder()
.setSigningKey(key)
.build()
.parseClaimsJws(token) // 파싱 및 검증, 실패 시 에러
.getBody();
}catch(MalformedJwtException malformedJwtException){
throw new CustomJWTException("MalFormed");
}catch(ExpiredJwtException expiredJwtException){
throw new CustomJWTException("Expired");
}catch(InvalidClaimException invalidClaimException){
throw new CustomJWTException("Invalid");
}catch(JwtException jwtException){
throw new CustomJWTException("JWTError");
}catch(Exception e){
throw new CustomJWTException("Error");
}
return claim;
}만료되거나 잘못된 RT에 대해서 알 수 있고 이를 advice에서 처리합니다.
@ExceptionHandler(CustomJWTException.class)
protected ResponseEntity<?> handleJWTException(CustomJWTException e) {
String msg = e.getMessage();
return ResponseEntity.ok().body(Map.of("error", msg));
}이렇게 되면 RT가 만료되었을때 사용자는 {error:에러메시지}를 받게 됩니다.
RT를 새로 발행할 때는 RT의 남은 시간을 봐서 새로운 RT도 만들어 줍니다.
String newRefreshToken = checkTime((Integer)claims.get("exp")) == true? JWTUtil.generateToken(claims, 60*24) : refreshToken;
이렇게 하면 사용자는 주기적으로 AT와 RT가 변경되게 됩니다.
최근에는 AT 갱신시에 RT를 무조건 새로 만들어주는 방식도 많이 사용하고 있습니다.
React쪽(다음챕터)
커스텀 훅으로 에러가 발생하면 경고창을 보여주도록 구성합니다.
장바구니 질문
0
19
1
로그인 확인
0
70
3
해결했습니다
0
52
1
지금 강의가 어려우신분 추천드립니다.
0
74
1
기존의 완성된 CRUD의 Build.gradle에 security관련 dependency를 추가하면 문제가 생깁니다.
0
75
2
CRA ? 질문입니다
0
67
1
음성불량
0
65
1
동일하게 실습하는데 이상하게 페이지를 찾지 못하네요..
0
169
2
22. REST 방식 컨트롤러 만들기(2), 29. 등록처리 부분 질문이 있습니다.
0
166
2
37강. 강의수업듣다 질문드립니다.
0
137
2
TodoDTO test 함수
0
165
3
강사님 오타 있음요
0
151
2
No 1. 교제(ppt) soruce 복붙 문제 의 건
0
194
4
No 1. 교제(ppt) soruce 복붙 문제 의 건
0
128
3
17강 문의드립니다.
0
83
1
카카오 연동설정이 이제 안되는거 같아요
0
367
2
8장 마지막 강의 시 오류
0
177
4
혹시 뭐가 문제인지 알 수 있나요?
0
138
2
챕터: React-Router 설정
0
105
2
백)TODO관련
0
98
2
마리아 db 설치중 포트를 이미 사용중이라고 합니다
0
185
2
이강의 듣고 소화시켰다면 몇년차 정도 개발자라고 할수 있을까요?
0
152
1
CSR , SSR 의 수요 궁금증 질문
0
138
2
섹션5부터...
0
123
1





