• 카테고리

    질문 & 답변
  • 세부 분야

    프론트엔드

  • 해결 여부

    미해결

refresh token rotation 오류

24.02.26 15:45 작성 조회수 152

0

안녕하세요 제로초님! 로그인 관련하여 질문드립니다!

1) 백엔드에서 response로 넘겨주는 access token이 있어서 이걸 session에 넣어 api 요청할 때마다 헤더에 담아 인증 하려고 하는데요, 로그인 후 next-auth signIn함수를 통해 자동으로 authjs.session-token이 생성되는데 그럼 이 토큰은 언제 쓰이는 건가요? 백엔드에서 넘겨주는 토큰이 있어도 next-auth를 사용해도 되는 건가요?


2) 로그인 기능과 관련해서 https://next-auth.js.org/v3/tutorials/refresh-token-rotation

를 참고해 토큰 갱신 로직을 jwt callbacks 안에 구현을 해보았습니다.

스크린샷 2024-02-26 오후 3.17.06.png

스크린샷 2024-02-26 오후 3.18.13.png

client 에서 session을 호출할 때마다 jwt callback이 실행되기 때문에 로그인 시 저장해 놓은 토큰(accesstoken)이 만료되었는지를 확인할 수 있다고 생각했고 위처럼 구현했습니다.
토큰이 만료가 되면 retun token대신 refreshAccessToken(token) 함수를 호출해 새로운 토큰을 return 해주었고, response도 정상적으로 옵니다.

다만 jwt callback이 동시간대에 한번만 실행되는 것이 아니라 여러번 실행이 되고 있고, session callback에서도 업데이트된 token이 확인될거라 생각했지만, session callback에서는 예전 토큰이 조회가 되는 상황입니다. next-auth callbacks가 jwt -> session 순으로 호출되는 것으로 알고 있어서 jwt에서 업데이트된 token을 리턴해주면 session에서 이를 받을 거라고 생각했는데.. 왜 업데이트가 되지 않는 건지 궁금합니다.

답변 1

답변을 작성해보세요.

1

  1. 이 토큰은 프론트엔드 서버 로그인 토큰입니다.

  2. session 콜백이 refreshAcessToken의 return보다 더 먼저 실행되는게 아닌지 확인해보세요

감사합니다!