프로젝트를 진행하면서 로그인 관련을 내가 맡다 보니까 Token에 대해 고민을 하게 되었다. 이제까지 다른 프로젝트를 하면서 로그인 기능을 구현했을 때에는 Access Token만 사용했었고, 사실상 Refresh Token의 필요성을 느끼지 못했었다.
하지만, 이번 프로젝트에서는 Refresh Token을 사용해보고자 했고, 사용을 했지만 결국에는 Refresh Token만 DB에 저장하고 모든 auth관련 api들을 Refresh Token만 계속 사용하고 정작 Access Token의 역할이 무엇인가? 이럴거면 Token을 하나만 사용하지 않고 왜 Refresh Token을 사용했지? 라는 의문이 들기 시작했다.
그래서 거의 프로젝트 막바지에 이럴거면 그냥 Token을 하나만 사용하는게 어떨까까지 고민하게 되었는데, 계속 생각해보니까 Access Token의 문제점이 분명하게 있었고, 이 기회에 그 문제점에 대해 자세하게 살펴볼 수 있게 되었다.
Access Token의 문제점
💡 Refresh Token이란?
결론부터 말하자면 Access Token과 Refresh Token의 역할은 완전하게 다르다.
Refresh Token의 목적은 Access Token의 유효기간을 짧고, 자주 재발급 하도록 만들어 보안을 강화하면서 사용자에게 잦은 로그아웃 경험을 주지 않도록 하는 것이다.
Refresh Token의 유효기간을 길게, Access Token의 유효기간을 짧게 설정하고, Access Token이 만료될 때마다 재발급해줌으로써 보안을 더욱 강화할 수 있고, 사용자의 불편함도 줄일 수 있다고 판단하여 Access Token과 Refresh Token 둘 다 사용하는 방법으로 결정했다.