컴퓨터 프로그래밍/CS

[CS] ACCESS 토큰과 REFRESH 토큰

한33 2024. 10. 23. 01:26

 

💡 Refresh 토큰이 뭐에요 Access 토큰과 비교해서 알아봅시다.

구분 액세스 토큰 리프레시 토큰
역할 API 호출 시 인증 액세스 토큰 재발급
수명 짧음 ( 몇 분 ~ 몇 시간 ) 김 ( 며칠 ~ 수개월 )
사용 위치 모든 API 요청에 사용 만료된 액세스 토큰 갱신 시 사용
저장 위치 브라우저 메모리, 쿠키 등 쿠키, 로컬 스토리지 또는 서버
만료 시 처리 리프레시 토큰으로 재발급 만료 시 재로그인 필요

 

이 두 가지를 함께 사용하면 보안편의성을 모두 확보할 수 있다.
리프레시 토큰을 통해 자주 로그인하지 않아도 되면서도, 액세스 토큰의 짧은 수명으로 보안을 강화할 수 있다.

 

💡 어떤 구조로 이 두 가지를 함께 사용할 수 있을까?

💡 Access 토큰과 Refresh 토큰을 조합할 때의 주의사항이 뭘까?

  • 리프레시 토큰 재사용 방지:
    • 한 번 사용된 리프레시 토큰은 즉시 폐기해 재사용 공격을 방지한.
  • 토큰 롤링(Token Rotation):
    • 리프레시 토큰 사용 시 새로운 리프레시 토큰과 액세스 토큰을 동시에 발급해 기존 리프레시 토큰을 무효화하는 전략을 사용한다.
  • 로그아웃 처리:
    • 로그아웃 시 리프레시 토큰을 DB에서 삭제해 이후 사용을 차단해야 한다.
  • 블랙리스트 관리:
    • 탈취된 리프레시 토큰은 블랙리스트에 등록해 더 이상 사용되지 않도록 해야 한다.

  • 자동 재발급 처리:
    • 액세스 토큰 만료 시 사용자가 로그아웃되지 않도록 백그라운드에서 리프레시 토큰으로 자동 재발급한다.
  • 만료 메시지 제공:
    • 리프레시 토큰도 만료된 경우, 로그인 페이지로 리디렉션하고 적절한 메시지를 제공해야 한다.