Access Token
의 만료 시간을 연장하거나 단축시키거나 새로 갱신하기 위해 존재하는 토큰.
보안을 위해서 Access Token
의 만료 시간을 짧게 설정하고, Refresh Token
으로 만료 시간을 갱신 한다.
session
refresh token과 access token을 session에 저장하고, 클라이언트가 token이 저장된 session에 접근하기 위해 session id를 cookie로 가지고 있는 방식
localStorage
access token을 localStorage에 refresh token을 cookie에 저장시켜 만료되면 새로운 access token을 받는 방식
NoSQL같이 key-value로 access token과 refresh token을 저장하면 보안이슈는 해결 될 수 있으나 새로 토큰을 발급 받을 때마다 요청을 해야한다는 단점이 있다.
또한, stateless가 장점인 jwt의 본질과는 상당히 동떨어지게 된다.
인증이 필요할때 토큰 만료시간이 지났으면 새로 발급받고 발급받은 토큰으로 다시 인증 요청을 보낸다.
장점: 사용자가 인증 요청이 필요할 때만 토큰을 재발급 해서 경제적이다
단점: 토큰이 만료된 경우 인증 요청을 2번 해야한다
access token 만료 시간이 2시간이면 1시간 55분정도에 새로 발급 받기.
https://slog.website/post/10
https://tecoble.techcourse.co.kr/post/2021-10-20-refresh-token/
https://leonkong.cc/posts/xss.html
https://velog.io/@0307kwon/JWT%EB%8A%94-%EC%96%B4%EB%94%94%EC%97%90-%EC%A0%80%EC%9E%A5%ED%95%B4%EC%95%BC%ED%95%A0%EA%B9%8C-localStorage-vs-cookie
https://hasura.io/blog/best-practices-of-using-jwt-with-graphql/#how-does-the-ssr-server-know-if-the-user-is-logged-in