next 프로젝트를 진행하며 흔히 로그인을 구현하는 방식이라 하면 두가지를 말할 수 있다.
세션 방식과 JWT 방식인데 로그인 방식을 입장권에 빗대고 로그인하는 웹 사이트를 영화관에 비유한다면
세션 방식의 로그인은 입장권에 거의 아무런 정보도 없는 것이고 확인을 영화관에서 한다.
그러나 JWT방식에는 다양한 정보가 담겨 있으며 따라서 영화관에서 이를 확인하는 것이 보다 간편하다.
여기에서 JWT 방식의 위험성이 생긴다.
jwt의 기본적인 부분은 여기서 확인할 수 있고 여기서 보이는 보안상의 문제점을 살펴보자.
그렇다면 세션 로그인 방식을 쓰지 왜 jwt 토큰을 쓸까? 이는 기본적으로 성능에 근거한다. 서비스가 커지고 회원이 많아질수록 서비스 제공자가 하나하나 확인하는 데 부담이 커진다. 그러나 jwt의 경우 확인절차가 확 줄어들어 부담이 굉장히 적다.
따라서 refreshToken 을 이용해 jwt의 보안상 약점을 보완해 사용하는 것이 좋다. jwt토큰의 만료시간을 짧게 두고 refreshToken을 이용해 계속해서 로그인을 연장(?) 하는 원리이다.
서비스 규모가 작으면 세션 방식이 오히려 나을지도 모르겠다.