서버 인증 - Access Token + Refresh Token 인증 방식 (JWT)

박영준·2023년 6월 27일
0

Server

목록 보기
5/8

JWT, Refresh, Access Token에 대해서 설명은 개발자 면접에서 자주 나오는 질문 중의 하나!

1. 정의

  • Access Token과 똑같은 형태의 JWT
    • JWT 방식의 강화버전!
    • Access Token과 동시에 발급되나, 더 긴 유효기간을 가짐

2. 예시

Refresh Token의 유효기간은 2주, Access Token의 유효기간은 1시간이라 가정해보자.

사용자는 API 요청을 하다가 1시간이 지나게 되면, 가지고 있는 Access Token은 만료되지만,
Refresh Token의 유효기간 전까지는 Access Token을 새롭게 발급받을 수 있다.

3. 동작순서

Access Token 만료가 될 때마다 계속 과정 5~6을 거칠 필요는 X

사용자(프론트엔드)에서 Access Token의 Payload를 통해 유효기간을 알 수 있으므로,
프론트엔드 단에서 API 요청 전에 토큰이 만료됐다면, 바로 재발급 요청을 할 수도 있다.

4. 장단점

장점

  • 기존의 Access Token 만 있을 때보다 안전하다

단점

  • 검증 프로세스가 길기 때문에, 구현이 복잡하다(프론트, 백엔드 모두)

  • Access Token 이 만료될 때마다, 새롭게 발급하는 과정에서 HTTP 요청 횟수가 多

    • 이는 곧 서버의 자원 낭비로 이어진다
  • Access Token 이 탈취당할 시, 해당 토큰이 만료되기 전까지는 토큰을 탈취한 사람은 누구나 접근 가능해져버린다.

    • Access Token 을 탈취당했다면, Access Token 의 유효기간 동안 접근 권한을 가지게 되지만
    • Refresh Token 을 탈취당한 상황이라면, 계속해서 Access Token 을 발급할 수 가 있어진다.

참고: Access Token의 문제점과 Refresh Token

profile
개발자로 거듭나기!

0개의 댓글