티스토리 뷰
1. JWT란?
JWT는 JSON Web Token의 약어로, JSON 형식의 데이터를 저장하는 토큰이며 다음과 같이 세 부분으로 구성된다.
- 헤더(header): 토큰 종류와 해시 알고리즘 정보
- 페이로드(payload): 토큰의 내용물이 인코딩된 부분
- 시그니처(signature): 일련의 문자열, 시그니처를 통해 토큰이 변조되었는지 여부를 확인
2. Refresh Token?
Access Token(JWT)를 통한 인증 방식의 문제는 만일 제 3자에게 탈취당할 경우 보안에 취약하다는 점이다.
유효기간이 짧은 Token의 경우 그만큼 사용자는 로그인을 자주 해서 새롭게 Token을 발급받아야 하므로 불편하다. 그러나 유효기간을 늘리면, 토큰을 탈취당했을 때 보안에 더 취약해지게 된다.
이때 “그러면 유효기간을 짧게 하면서 좋은 방법이 있지는 않을까?”라는 질문의 답이 바로 "Refresh Token".
Refresh Token은 Access Token과 똑같은 형태의 JWT이다. 처음에 로그인을 완료했을 때 Access Token과 동시에 발급되는 Refresh Token은 긴 유효기간을 가지면서, Access Token이 만료됐을 때 새로 발급해주는 열쇠가 된다
* Access Token은 탈취당하면 정보가 유출되는건 동일하다. 다만 짧은 유효기간 안에만 사용이 가능하기에 더 안전하다.
* Refresh Token의 유효기간이 만료됐다면, 사용자는 새로 로그인해야 한다. Refresh Token도 탈취될 가능성이 있기 때문에 적절한 유효기간 설정이 필요하다.
3. 결론
장점
- 기존의 Access Token만 있을 때보다 안전하다.
단점
- 구현이 복잡하다.
- Access Token이 만료될 때마다 새롭게 발급하는 과정에서 생기는 HTTP 요청 횟수가 많다. 이는 서버의 자원 낭비로 귀결된다.
References:
쉽게 알아보는 서버 인증 2편(Access Token + Refresh Token) — 그랩의 블로그 (tistory.com)
[Node.js] JWT: Access Token & Refresh Token 인증 구현 — TaxFree (tistory.com)
'TIL WIL' 카테고리의 다른 글
항해 99 TIL-24 Swagger (in Node.js) (0) | 2022.03.16 |
---|---|
항해 99 TIL-23 MVC (0) | 2022.03.15 |
[WIL-9week] 2021.03.07~03.13 (0) | 2022.03.13 |
항해 99 TIL-21 Web Server vs WAS (0) | 2022.03.08 |
[WIL-8week] 2021.02.28~03.06 (0) | 2022.03.06 |