본문 바로가기
배움 기록/ETC

[JWT] refresh token, access token 정리 (로그인 과정)

by dygreen 2023. 4. 4.

 

refresh token과 access token에 대해 정리해보겠습니다

통합 로그인 프로젝트를 진행할 때 JWT, refresh token, access token 등의 개념을 처음 접하였는데, 

이 개념들을 간단하게 정리하고자 한다.

 

📌 JWT ? 

: JWT는 JSON Web Token의 약자이다.

정보를 JSON object로 안전하게 전송하는 방법이다.

 

JWT는 일반적으로 웹 애플리케이션에서 인증 및 권한 부여 목적으로 사용된다.

즉, 유저가 로그인할 때 서버가 인증 정보를 보내주는데,

암호화나 시그니처 추가가 가능한 데이터 패키지(=JWT) 안에 인증 정보를 담아서 보내준다.

담기는 정보 중 refresh token과 access token이 유저 인증에 사용된다.

 

📌 refresh token & access token

먼저 refresh tokenaccess token의 유효 기간이 만료됐을 때 새롭게 발급해주는 역할을 한다.

 

refresh token서버에 저장되므로(*stateful) 탈취 당했다고 판단되면 서버에서 refresh token을 삭제함으로써 강제 로그아웃을 시킬 수 있다.

access token서버에 저장되지 않으므로(*statless) 탈취되면 서버에서는 막을 방법이 없어 보안 취약성이 존재한다. 

 

따라서 access token은 짧은 시간 안에 만료되는 구조로,

refresh token은 처리 비용이 많이 들기 때문에 2주 정도 유지할 수 있는 구조로 가져가는 방식을 주로 사용한다.

 

*stateful(=상태유지) : 클라이언트-서버 관계에서 서버가 클라이언트의 상태를 보존함

*statless(=무상태) : 클라이언트-서버 관계에서 서버가 클라이언트의 상태를 보존하지 않음을 의미

 

📌 로그인이 이루어지는 과정

(이미지 출처: https://velog.io/@yaytomato)

  1. 유저가 로그인 한다.
  2. 서버가 JWT에 인증 정보를 담아 보내준다.
  3. 정보 중 refresh token과 access token을 클라이언트에 저장해둔다.
  4. 클라이언트는 API 요청 시 Authorization 헤더에 access token을 포함시켜 보낸다.
  5. access token 만료 에러 발생 시, 클라이언트에 저장된 refresh token을 사용해 새로운 access token을 요청한다.
  6. 서버는 유효한 refresh token 인지 검증 후 새로운 access token을 발급한다.

 

회사에서 진행했던 통합 로그인 페이지에서는..

  • 서버에 refresh token을 쿠키를 통해 전송한다. (GET /refresh-token)
  • access token을 받아서 localStrage에 저장한다.
  • 로그인이 필요한 페이지에 접속할 때 access token 유효성을 검사한다.

참고 :
https://steadily-worked.tistory.com/469
https://velog.io/@yaytomato/%ED%94%84%EB%A1%A0%ED%8A%B8%EC%97%90%EC%84%9C-%EC%95%88%EC%A0%84%ED%95%98%EA%B2%8C-%EB%A1%9C%EA%B7%B8%EC%9D%B8-%EC%B2%98%EB%A6%AC%ED%95%98%EA%B8%B0

 

728x90

댓글