Access Token과 Refresh Token

김재현·2024년 1월 8일
0

TIL

목록 보기
72/88
post-thumbnail

Refresh Token을 client에게 전달하는 방식도 있지만 여기서는 DB에서 관리하는 방식을 소개한다.

Refresh Token이란?

사용자가 인증된 상태를 유지하고, 특정 리소스에 접근하는 데 필요한 접근 토큰(Access Token)을 발급한다. 이 때, Access Token의 유효 기간이 만료되면 새로운 Access Token을 얻기 위해 Refresh Token이 사용되는 것이다.

액세스 토큰은 주로 리소스 서버에서 사용자 데이터에 접근하기 위해 사용되며, 리프레시 토큰은 액세스 토큰이 만료될 때마다 새로운 액세스 토큰을 얻기 위한 수단으로 사용된다.

따라서 리프레시 토큰이 노출되면 보안 문제가 발생할 수 있으므로 DB에 안전하게 저장되어야 한다.

일반적인 흐름

  1. 사용자가 처음으로 인증을 하면 Access Token(클라이언트에게)과 함께 Refresh Token(DB에)을 발급

  2. Access Token은 짧은 유효 기간(ex: 15분)을 갖는다.

  3. 만료된 Access Token 대신에 Refresh Token을 사용하여 새로운 Access Token을 얻는다.

  4. Refresh Token은 Access Token보다 긴 유효 기간(ex: 7일)을 가지며, 사용자가 로그아웃하거나 장기간 동안 사용하지 않을 경우에만 만료된다.

  5. Refresh Token을 사용하면 사용자는 로그인 상태를 지속할 수 있으며, 애플리케이션이 사용자의 로그인 상태를 유지하면서 Access Token을 갱신한다.

장점

  • 유효기간 단축: Access Token은 유출되어도 그 유효 기간이 짧기 때문에 공격자가 그 토큰을 오랫동안 이용할 기회가 줄어들어 보안이 강화된다고 볼 수 있다.
  • 안전한 보관: Refresh Token은 일반적으로 안전한 서버 측 저장소에 보관되기 때문에 악용하기 어렵다.
  • 사용자의 편의성: 앞서 말했듯, 로그인 상태를 유지하기 때문에 사용자 입장에서 편리하다.
  • 보안 강화: DB에만 저장되는 Refresh Token에는 민감한 정보를, Access Token에는 일반적인 정보를 포함하여 민감한 정보가 탈취될 가능성이 적어진다.

관련 포스팅

profile
I live in Seoul, Korea, Handsome

0개의 댓글