(작성 중인 글입니다.)
먼저 refresh token을 왜 적용하게 됐는가?
나는 현재 프로젝트에 JWT를 사용하고 있다. JWT는 말 그대로 토큰을 사용한 로그인 방식이다.
로그인을 했을 때 먼저 access token을 발급해준다.
사용자는 요청 시 이 token과 함께 요청을 해야한다.
다만 여기서 위험한 점이 하나 있는데 중간에 이 token이 탈취되면 누구든 그 사용자인 척 할 수 있다는 것이다.
그러면 개인정보 도용 등 다양한 문제 상황이 발생할 수 있다.
토큰은 한번 부여하면 삭제가 안되기 때문이다.
그래서 이에 대한 보완점으로 refresh token이라는 것도 같이 부여해주게 되었다.
access token은 짧은 유효기간을 가져 탈취당하더라도 오래 사용하지 못하게 안정성을 챙기면서, 긴 유효기간을 가진 refresh token으로 편의성도 챙긴다.
사용자를 인증할 때는 access token으로 인증하고, 이 access token이 만료되었을 경우 refresh token으로 한번 더 인증해 access token을 재발급해주는 형태로 구상했다.
이에 대해 refresh token으로 어떻게 access token을 재발급할까에 대한 고민으로 이 글을 남긴다.
header의 authorization에 넣을 수 있는 값은 1개이다.
하지만 access token이 만료됐을 때 검사할 refresh token도 안전하게 받고 싶다.
그래서 두가지 방식을 생각해봤다.
1. 매요청 시에 body에 refresh token을 포함한다.
2. access token이 만료됐을 시 새로운 url을 별도로 따서 그 url로 요청하게 한다. (authorization 활용 가능)
이미 정답이 있는지도 모르지만 내 결정은 2번이었다.
'Spring > 프로젝트' 카테고리의 다른 글
@RestContollerAdvice 로 Security 예외 처리하기 (0) | 2023.07.05 |
---|---|
JPA @Id에 Long을 쓴 이유 (0) | 2023.06.23 |
ERD 설계 과정 (0) | 2023.06.20 |