JWT Token / Access token / Refresh token
JWT Token
- 유저의 신원을 결정하는 정보를 담은 데이터로 서버와 클라이언트가 안전하게 통신할 수 있는 매개체
- 탈취 당했을 때를 대비하여 유효기간을 설정해야 함
- 다만, 유효기간을 짧게 두면 사용자가 로그인을 자주 해야 하고 길게 두면 보안상 탈취 위험에 취약하게 됨
- 그러기 때문에 유효기간이 다른 JWT 토큰 두 개 (Access Token과 Refresh Token)을 둠
- Refresh Token 또한 탈취당할 위험이 있기 때문에 Access Token을 재요청 할 때 마다 Refresh 토큰도 새로 발급받는 Refrsh Token Rotation 방법을 사용할 수 있음
Access Token
- API와 통신할 때 사용하는 토큰
- 짧은 유효기간
Refresh Token
- Access Token이 만료됐을 때 사용하는 토큰
- 긴 유효기간
기본 동작 방식
- 로그인 인증에 성공 시 클라이언트는 Refresh Token과 Access Token을 받는다
- 서버는 db에 Refresh Token을 저장하고 클라이언트는 로컬에 Refresh Token과 Access Token을 저장한다
- Access Token을 사용하여 API와 통신한다
- Access Token이 만료되면 사용자는 권한이 없는 사용자가 된다.
- Refresh Token을 넣어 API를 재요청한다.
- 서버가 Refresh Token으로 사용자의 권한을 확인하면 새로운 Access Token을 발급한다.
- Refresh 토큰 또한 만료되었다면 사용자는 재로그인이 필요하다.