Refresh Token

장숭혁·2024년 8월 24일
0

TIL작성

목록 보기
56/60

Refresh Token : 인증 시스템에서 중요한 역할, 보안 토큰. OAUTH와 JWT(JSON WEB TOKEN) 기반 인증 시스템에서 사용된다.

세션 vs 토큰

  1. 토큰은 세션방식과 달리 stateless 하다. ( 서버가 상태를 보관하지 않는다. )

  2. 토큰 방식에서는 서버는 한번 발급한 토큰에 대해서 제어권을 가지지 않는다.

Refresh Token 주요 기능

장기 인증 유지

  • Access Token은 보안을 위해 짧은 유효 기간을 가짐 ( 15분 ~ 60분 )

  • Refresh Token은 만료된 Access Token을 갱신해 준다.

  • Refresh Token은 Access Token에 비해 더 긴 유효 기간을 가진다. 장기간 로그인 할 필요 없이 인증을 유지 할 수 있게 한다. ( 쿠팡에 접속하면 자동으로 접속이 됨 )

목적
Refresh Token의 목적은 Access Token의 유효 기간을 짧고, 자주 재발급 하도록 만들어 보안을 강화하면서도 사용자에게 잦은 로그아웃 경험을 주지 않도록 하는 것이다.

보안 강화 기능

  • Access Token은 민감한 정보가 포함되어 있어 유출시 악용 우려가 있다. 짧게 설정하여 악용할 수 있는 시간을 제한시킨다.

  • Refresh Token을 클라이언트는 안전하게 보관하여야 한다. 그렇지 않을 경우 더 심각한 보안 문제가 발생할 수 있다. 그렇기에 서버는 Refresh Token을 더 철저히 검증해야한다.

    • Refresh Token을 로컬 스토리지나 세션 스토리지 대신에 HTTP 전용 쿠키에 저장한다.

    • 유출시 즉시 폐지 후, 재 로그인 요구

    • 서버 측에서 유효성을 검증후, 실패시 해당 토큰을 취소하거나 블랙리스트에 추가한다.

Refresh Token 시나리오

Refresh Token 탈취 대처 방법

  1. JWT 방식
  • 가장 경제적인 방식이며 보안 위협이 셋 중 가장 높은 방식이다.
  1. RTR(Refresh Token Rotation) 방식
  • refresh token을 한번 사용으로 제한한 후 access token과 refresh token을 같이 클라이언트에 재발급해주는 방법, 이미 쓴 refresh token은 탈취당해도 사용할 수 없다는 장점이 있지만 안 쓴 refresh token을 탈취당할 우려가 있다.
  1. 임의의 값을 refresh Token으로 부여하고 그 값을 사용자와 매핑 후 데이터 베이스에 저장하는 방식
  • 가장 안전한 방식, 탈취를 당했을 때 그 토큰을 정지 시킬 수 있다. 하지만 탈취당했다는 것을 알기 전까지 정지 시킬 수 있는 방법은 없을 것이다.
profile
코딩 기록

0개의 댓글

관련 채용 정보