개념 : 사용자에 대한 정보를 담고 있으며, 서비스에 접근 가능한 토큰을 의미한다.
특징 보통은 생존 시간이 짧다. (1시간 ~ 1일)

access 토큰만을 이용한 로그인 로직이다. 오직 해당 토큰만을 이용하여 정상적으로 호출하거나 그렇지 않으면 예외 발생 시키면 된다.
개념 : 자체로는 별다른 정보를 담고 있지는 않지만 accessToken이 만료되었을 때 서버에서 이를 확인하고 새로운 액세서 토큰을 발급해 주기 위해 사용한다.
보통은 생존 시간이 길다. (1년~)
보통은 refresh 토큰은 db에 저장하여 보관한다.

accessToken과refreshToken을 모두 이용하는 경우이다. 먼저accessToken이 유효한지 확인하고 그렇지 않은 경우는refreshToken의 유효성을 확인하고 해당 토큰이 유효하면accessToken을 새롭게 발급 그렇지 않은 경우 예외를 발생 시킨다.
refreshToken 의 통신 빈도가 적기는 하지만 탈취 위험에서 완전히 벗어난 것은 아니다.
탈취를 예방하기 위해서 OAuth 에서는 Refresh Token Rotation 을 사용한다.
Access Token 을 재요청 할 때 마다 Refresh Token 도 새로 발급받는 형식이다.
위와 같은 과정을 가지는데 AT (access token), RT (refresh token)
를 모두 재발급 하게 된다. 이때 RT를 재발급 하면 DB 의 RT 또한 업데이트가 되어서 탈취 되었다 해도 인지 할 수 있다.
=> 그래서 서버에서는 해당 RT 토큰 값의 키를 RT 가 아닌 userPK (email) 로 설정한다.
이런식으로 이메일을 통해 식별을 하게 되면 만약 클라이언트의 AT 와 서버의 RT 가 다르게 되면 서버는 악의적인 침투로 보고 db 에서 해당 유저의 이메일 Key 를 삭제하고 재로그인 하도록 클라이언트를 리턴하도록 하여 해결한다.