TIL

현재 프로젝트로 앱 개발중이며 백엔드 진행중이다.
JWT 토큰을 사용중이다.

Server to Client

  • 로그인 또는 회원가입시 response body에 토큰 정보를 제공

Client to Server

  • 인증이 필요한 API마다 headers[x-access-token] 에 토큰 전달 및 검증

문제점

  • 유효기간 2달인 JWT토큰을 제공중이다.
  • 클라이언트에서 state로 토큰이 관리 될텐데, 로그아웃 하면 어떻게 되는거지?

현재 진행중

  • 이번 프로젝트에서는 클라이언트에서 토큰을 관리하고 로그아웃 진행시 state에 보관중인 token을 자체적으로 삭제하기로 하였다.
  • 토큰의 장점을 최대한 활용하기 위해 데이터베이스, 세션을 사용하지는 않았다.

아래는 블로그의 내용 중 결론만 발췌했다.

You should either let a token be active until it is expired by itself, or opt to use a storage for logged out tokens if you want to restrict the usage of a token when a user logs out. To sum it all up, simply follow this 4 bullet points:

1. Set a reasonable expiration time on tokens

  • 합리적인 (납득갈만한) 유효기한을 정하자.

2. Delete the stored token from client side upon log out

  • 로그아웃시 클라이언트에 저장된 토큰을 알아서 삭제하자

3. Have DB of no longer active tokens that still have some time to live

  • db에 토큰을 관리하자 (로그아웃 적용된 토큰은 더이상 사용이 안될 수 있도록)

4. Query provided token against The Blacklist on every authorized request

  • 블랙리스트를 활용하자

이번 프로젝트에는 합리적인 유효기한을 정하고, 로그아웃시 클라이언트에 저장된 토큰을 알아서 삭제하도록 진행 예정이다.

참고 블로그 https://dev.to/_arpy/how-to-log-out-when-using-jwt-4ajm