1. 왜 Access Token은 수명이 짧아야 할까요?
가장 큰 이유는 탈취의 위험 때문입니다.
Access Token은 API를 호출할 때마다 HTTP 헤더에 실려 네트워크를 통해 전송됩니다. 만약 이 토큰이 중간에 해커에게 탈취당하면, 해커는 만료되기 전까지 사용자인 척하며 모든 API를 호출할 수 있습니다.
• 만료 시간이 1년이라면? -> 해커는 1년 동안 사용자 계정으로 모든 것을 할 수 있습니다.
• 만료 시간이 30분이라면? -> 해커가 토큰을 훔쳐도 최대 30분만 악용할 수 있습니다. 피해 범위가 극적으로 줄어듭니다.
2. 불편한 UX는 어떻게 해결하나요? (Refresh Token의 등장)
"그럼 30분마다 다시 로그인해야 하나요?" 라는 문제를 해결하기 위해 Refresh Token이 등장합니다.
• Access Token (액세스 토큰):
◦ 역할: API 호출 시 사용하는 "실제 출입증"
◦ 수명: 매우 짧음 (30분 ~ 1시간)
◦ 특징: 탈취되어도 피해가 적음.
• Refresh Token (리프레시 토큰):
◦ 역할: 만료된 Access Token을 새로 발급받기 위한 "교환권"
◦ 수명: 매우 김 (7일 ~ 30일)
◦ 특징: DB에 저장하여 관리하며, 오직 Access Token을 재발급받는 용도로만 사용됨.
3. 호텔 키카드 비유
이 구조는 호텔 시스템과 매우 유사합니다.
1. 체크인 (로그인):
◦ 프론트 데스크에서 신분 확인 후 **객실 키카드(Access Token)**와 **예약 확인증(Refresh Token)**을 받습니다.
2. 객실 이용 (API 호출):
◦ 객실 문을 열 때마다 **키카드(Access Token)**를 사용합니다.
3. 키카드 만료 (Access Token 만료):
◦ 키카드가 갑자기 작동하지 않습니다. (API 호출 시 401 에러 발생)
4. 키카드 재발급 (토큰 재발급):
◦ 다시 프론트 데스크로 가서 **예약 확인증(Refresh Token)**을 보여주고, 새로운 **키카드(Access Token)**를 발급받습니다.
◦ 이 과정이 프론트엔드의 Axios Interceptor를 통해 자동으로 이루어지므로, 사용자는 문이 잠시 안 열렸다는 사실조차 인지하지 못합니다.
5. 체크아웃 (로그아웃):
◦ 프론트 데스크에서 체크아웃을 하면, 호텔 시스템은 **예약 확인증(Refresh Token)**을 무효화(DB에서 삭제)합니다. 이제 더 이상 새로운 키카드를 발급받을 수 없습니다.
'그 외 ... (정리해야함) > 그 외' 카테고리의 다른 글
| 회계 용어 정리 (0) | 2023.03.19 |
|---|---|
| 데이터베이스 트랜잭션이 안전하게 수행된다는 것을 보장하기 위한 성질 (0) | 2018.09.18 |
| Base64 인코딩 (0) | 2018.09.11 |
| 블록 암호 운용 방식(block cipher modes of operation) (0) | 2018.09.10 |
| 암호화 알고리즘 종류 (1) | 2018.09.10 |