처음 Redis 를 사용할 때 만료 시간을 설정하는 기준은 토큰이 만료되면 Redis 에 제거되도록 하는 것이 목적이었다. 하지만 만료 시간 설정 방식을 찾아보니 예상과는 달리 value 기준이 아닌, key 를 기준으로 했기에 value 에 있는 AccessToken 과 RefreshToken 의 만료시간을 다르게 설정할 수 없었다. 즉, 토큰의 만료 시간과 Redis 의 존재 여부를 일치 시킬 수 없었기 때문에 만료 시간을 설정하는 기준은 불필요한 데이터가 오래 쌓이지 않도록 방지하는 역할만을 하도록 결정하였다. 또한 Redis 에 값을 처음 저장했을 때, 값이 일부 수정되었을 때, 값이 삭제되어야 하는 상황 등을 설계할 필요가 생겼다.
Redis 에 값을 가장 처음 저장하는 과정이다. 상대적으로 만료 시간이 긴 Refresh Token
의 시간을 기준으로 key 의 만료 시간을 설정한다.
Refresh Token 만료 시간 존재의 이유는 보안과 연결되어 있다. 사용자의 편의성을 위해 Refresh Token 의 만료 시간은 상대적으로 길지만 만료 시간이 길면 길수록 로그인 유지 시간이 늘어나 보안에 좋지 않다. 즉, Refresh Token 의 만료 시간은 최소한의 로그인 유지 기간이다. ‘재’ 로그인을 했다는 것은 사용자가 인증 과정을 거쳤다는 의미이므로 새로운 Refresh Token
의 시간으로 설정한다.
‘재 로그인 시’ 에 대한 만료 시간 기준으로 판단해보면, Access Token 을 재발급 받는 행위는 사용자가 이전에 인증했던 이력을 가지고 다시한번 로그인을 유지하겠다는 의미이다. 따라서 최소한의 로그인 유지 기간을 늘리지 않는, 이전에 발급받은 Refresh Token
의 만료 시간으로 설정한다.
로그아웃 시에는 저장된 정보를 제거하기 때문에 만료 시간을 설정할 필요가 없다.