개발/Spring Boot

Refresh Token이 탈취된다면?

inseoking 2023. 3. 14. 10:51

1. Preview

JWT의 보안을 강화하기 위해 Refresh Token 기법을 사용한다. JWT를 탈취 당할 경우, 만료시간까지 해커가 자유롭게 사용할 수 있기 때문에 사용자의 최초 인증 시 JWT와 함께 Refresh Token을 던진다. 서버는 JWT의 만료시간을 짧게 설정하고, Refresh Token을 길게 설정한다. 그리고, JWT가 만료되었을 때, 클라이언트로부터 Refresh Token을 받아 새 JWT를 생성해주는 방식이다.

 

2. Refresh Token의 탈취

하지만, 같은 문제가 Refresh Token한테도 있다. Refresh Token이 탈취된다면? 어떻게 될까? Refresh Token의 만료시간은 JWT보다 길기 때문에, Refresh Token이 유효한 시간동안 계속해서 JWT를 갱신할 수 있고, 사용하게 된다. 오히려 해커에게 더 긴 시간 사용자의 ID로 서비스를 이용할 수 있는 상황을 만들 수 있다. 이 상황에서 사용할 수 있는 방식이 Refresh Token Rotation 방식이다.

 

3. Refresh Token Rotation

Refresh Token Rotation이란 말 그대로 Refresh Token을 변경하여 사용한다는 기법이다. JWT가 만료됨이 따라 Refresh Token으로 새 JWT를 요청할 때, 서버는 JWT와 함께 만료 시간은 동일한 새 Refresh Token을 보내주어 클라이언트의 인증 토큰을 갱신해준다.