Access Token의 유효기간이 짧아야 하는 이유
Info
Access Token을 JWT 방식으로 사용한다는 전제 하에 작성되었음.
서버는 Access Token(JWT)를 받아서 문제가 되지 않았다면 바로 인증 절차를 완료한다. 또한, 서버는 JWT를 발행한 이후에는 별도의 조치를 하지 않는 이상 Access Token을 폐기하기는 어렵다. 왜냐하면 무상태성이고 Access Token을 발급했다는 기록 자체를 남기지 않기 때문이다.
따라서 Access Token의 지속시간을 길게(14일) 하는 경우에는 탈취되었을 경우에 탈취한 탈취자는 긴 시간동안 그 사용자의 계정으로 특정 API 호출이 가능해진다는 심각한 문제가 발생할 수 있다.
따라서 Access Token의 지속시간을 짧게 가져가도록 해야한다. 그렇게 되는 경우 탈취가 된다고 하더라도 짧은 시간이라서 피해를 최소화 시킬 수 있다.
동시에 서버가 관리할 수 있는 Refresh Token의 지속시간을 길게 늘려서 만약 위험한 상황이 발생하거나 탈취가 된다고 하더라도 refresh token을 날려버리면 되기 때문에 보안을 더욱 안전하게 유지할 수 있다. 물론 refresh token을 폐기한다 해도 Access Token은 만료 시기까지 유지된다.
Access Token의 유효기간을 짧게 유지하면서도 사용자가 자주 로그인하지 않도록 Refresh Token은 상대적으로 긴 유효기간을 갖는다. 다만 Refresh Token이 탈취되면 새로운 Access Token을 계속 발급할 수 있으므로 Rotation과 재사용 탐지가 필요하다.