인프런 커뮤니티 질문&답변

평범한 도미님의 프로필 이미지
평범한 도미

작성한 질문수

Next + React Query로 SNS 서비스 만들기

로그아웃 & 로그인 여부에 따라 화면 다르게 하기

refresh token rotation 오류

작성

·

409

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보다 더 먼저 실행되는게 아닌지 확인해보세요

감사합니다!

평범한 도미님의 프로필 이미지
평범한 도미

작성한 질문수

질문하기