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

정민교님의 프로필 이미지
정민교

작성한 질문수

[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core

토큰 재발급 로직 코딩하기

refresh token 재발급과 만료에 대해서

작성

·

840

·

수정됨

0

refresh token을 재발급 하기 위한 작업 과정에 대해 궁금한 것이 있어서 질문드립니다.

저는 access token이 만료되면 refresh token을 통해 재발급을 받으려고 시도하고,

이때 refresh token마저 만료된 상태라면 다시 로그인 하여 새로운 access token과 refresh token을 발급받아야 한다고 생각하고 있었습니다.

그런데 refresh token을 재발급하는 로직도 강의 내용에 있더라구요.

강의에서 refresh token이 만료되면 /auth/token/refresh api로 refresh token을 재발급 받으면 된다라고 설명해주셨는데,

만료된 refresh token으로 refresh token을 재발급 받는 건 좀 이상한 것 같아서요.

아니면 refresh token이 만료되지 않았는데 refresh token을 재발급 해야 하는 요청이 따로 있을까요?

답변 2

0

코드팩토리님의 프로필 이미지
코드팩토리
지식공유자

안녕하세요!

제가 강의에서 refresh token을 재발급 받는 방법을 알려드린 이유는 실제로 refresh token을 재발급 받는 서비스들도 있기 때문입니다. (회사마다 다릅니다)

아무리 뭔가가 정석이라고 해도 모든 회사와 서비스는 본인들의 입맛에 맞춰서 변형을 하기 나름입니다.

이 프로젝트는 하나의 프로덕션에 올라갈 서비스를 만드는게 목표가 아니고 여러분들이 최대한 다양하고 넓은 경험을 할 수 있도록 설계된 강의입니다. 그렇기 때문에 혹시 refresh token을 재발급 받고 싶다면 이렇게 하면 된다라고 알려드리는겁니다. 실제 여러분들의 프로젝트에서 refresh token도 재발급을 받을 수 있게하냐 그렇게 하지 않냐는 여러분 마음입니다.

모든 토큰은 expiry date가 존재하는게 매우 중요합니다. refresh token 재발급이 불가능하다면 expiry date가 지난 후에는 로그아웃밖에 선택지가 없습니다. 하지만 영구적으로 로그인을 유지 시키고싶다면 expiry date를 증가시키는건 말이 안되니 refresh token을 재발급 하는 경우가 있습니다. 물론 프로그래밍 관점에서, 보안 관점에서 봤을때 좋은 행동이 아니라고 볼 수 있습니다. 하지만 비즈니스는 개발자가 생각하는 이상대로 설계 가능한게 아닙니다. 그리고 이를 이해하는 개발자가 더욱 유능한 개발자라고 볼 수 있습니다.

감사합니다!

0

안녕하세요, 인프렌 AI 인턴입니다. 정민교님의 질문에 대해 유용한 정보를 찾았습니다.

refresh 토큰이 만료됐는데 만료된 refresh 토큰으로 새로운 refresh 토큰을 발급받는 것인가요..? 에서 비슷한 의문을 가진 다른 수강생의 질문과 이에 대한 답변을 확인할 수 있습니다. 이 답변에 따르면, refresh token을 refresh token으로 재발급 받는 것이 가능한지 여부는 해당 회사나 서비스의 정책에 따라 다릅니다. 일부는 refresh token의 재발급을 허용하지 않지만, 재발급을 허용하는 경우에는 기존 refresh token이 만료되기 전에 신규 refresh token을 발급 받아야 합니다. 당연하게도 모든 토큰은 만료된 순간 그 어떤 작업도 수행할 수 없으므로, 만료되기 전에 새로운 토큰을 받아야 합니다.

추가적으로, refresh 토큰 재발급 요청에 대해서 라는 게시물에서도 refresh 토큰의 재발급 과정에 대한 유사한 질문에 답변이 제시되어 있습니다. 이 답변에서는 refresh 토큰 만료 시 어떻게 재발급 요청을 처리할 것인지, 그리고 refresh 토큰과 access 토큰을 어떻게 다뤄야 하는지 등에 대한 설명이 포함되어 있습니다.

이 두 질문과 그에 대한 답변들은 refresh token과 access token의 재발급 과정, 만료와 관련된 요청 처리에 대한 이해를 돕기 위해 유용할 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

정민교님의 프로필 이미지
정민교
질문자

refresh token을 재발급 하기 위해서는 기존 refresh token이 만료되지 않아야 한다는 것은 이해가 됩니다만,

강의 내용에서 refresh token이 만료되면, refresh token을 재발급 받으면 된다고 설명하고 있어서 이해가 안되어서 질문을 남깁니다.

프론트에서 access token을 재발급 하려는 이유는 access token을 통해 리소스에 접근할 수 없기 때문에(만료 등의 이유로) refresh token으로 access token을 재발급 받는 것으로 알고 있는데,

여기서 refresh token도 만료가 되었다면, 다시 로그인 해야하지 않나 해서요.

애초에 재발급을 언제 받을 것인가는 서버측에서 만료되었다거나 잘못된 토큰이라는 에러 응답을 받았을 때가 아닌가 싶은데...

정민교님의 프로필 이미지
정민교

작성한 질문수

질문하기