Refresh Token : 인증 시스템에서 중요한 역할, 보안 토큰. OAUTH와 JWT(JSON WEB TOKEN) 기반 인증 시스템에서 사용된다.
토큰은 세션방식과 달리 stateless 하다. ( 서버가 상태를 보관하지 않는다. )
토큰 방식에서는 서버는 한번 발급한 토큰에 대해서 제어권을 가지지 않는다.
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 전용 쿠키에 저장한다.
유출시 즉시 폐지 후, 재 로그인 요구
서버 측에서 유효성을 검증후, 실패시 해당 토큰을 취소하거나 블랙리스트에 추가한다.