Refresh & Access Token

shin·2023년 1월 27일
0

HTTP

목록 보기
13/13

Access Token

  • API 요청을 할 때 검증용 토큰으로 사용된다. 인증이 필요한 API를 사용할때는 반드시 Access Token을 Header에 넣어서 보내야한다.
    예를들어 유저 정보 수정이나 회사 채용공고 지원인원 확인등이다.
  • 유효기간이 짧다.
  • 자주 노출되는 Access Token은 유효기간을 짧게해서 Token이 탈취돼도 해커가 오래 사용하지 못하게 방지할 수 있다.

Refresh Token

  • Access Token을 추가로 발급할 때 사용한다. Access Token을 새로고침하는 기능이 있기 때문에 Refresh Token이라고 부른다.
  • 유효기간이 길다.
  • 상대적으로 노출이 적은 Refresh Token은 Access Token을 새로 발급 받을때만 사용하기 때문에 탈취 가능성이 적다.

토큰 발급과정

  1. 클라이언트에서 서버로 ID와 비밀번호를 전송한다. 이때 "username:password" 형태의 값을 Base64로 인코딩 한 후 authorization 헤더에 "Basic $token" 형태로 전송한다.
  2. 서버에서 디코딩 후 ID와 비밀번호가 맞는지 검증을 한다.
  3. 값이 맞으면 Refresh & Access Token을 클라이언트에게 전송한다.

Refresh Token 사용과정

  1. 클라이언트에서 서버로 Access Token 재발급 URL을 요청한다. Header에 authorization:"Bearer:$refreshToken" 형식으로 전송한다.
  2. 서버에서 Refresh Token을 검증하고 Access Token을 재발급 받느다.
  3. 클라이언트에게 전송한다.

Access Token 사용과정

  1. 클라이언트에서 서버로 API를 요청한다. 예를들어 장바구니 데이터를 요청한다.
    Header에 authorization:"Bearer:$refreshToken" 형식으로 전송한다.
  2. 서버에서 검증을 한다.
  3. 데이터베이스에 데이터 요청을 한다.
  4. 데이터베이스에서 서버로 데이터를 응답한다.
  5. 서버에서 클라이언트에서 데이터를 응답한다.

일반적 토큰인증 로직

  • 만약 5번 Refresh 토큰 마저 만료가 된다면 로그오프를 시켜야한다. 그 어떤 토큰도 신뢰할 수 없기 때문이다.
  • 가끔 로그인 중에 로그아웃이 되는 경우가 있는데 Refresh 토큰이 만료가 되서 다시 로그인 하는 경우 말고 보안적으로 토큰을 신뢰할 수 있는 방법이 없다.

0개의 댓글