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

김유현님의 프로필 이미지

작성한 질문수

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

토큰 재발급 로직 코딩하기

Token 재발급 관련 궁금증

24.08.09 20:36 작성

·

130

·

수정됨

0

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

 

안녕하세요!

강의를 잘 듣던 중 궁금한 점이 생겨 질문드립니다.

 

해당 강의대로 진행하면 access token과 refresh token 모두 만료 전에 재발급받아 token을 연장시키는 개념으로 이해가 됩니다.

그러나 각 token의 만료 시간인 300초, 3600초가 지나지 않은 상태에서 token을 재발급하게 되면 1개의 계정에 다수의 token이 존재할 수 있는 상황이 될 수 있다고 생각됩니다.(예를 들어 만료가 3000초 남은 refresh token으로 refresh token을 재발급하게 되면 3000초 남은 refresh token과 3600초 남은 새로운 refresh token 2개가 존재하게 됩니다.)

 

그래서 궁금한 점은 아래 두가지입니다.

  1. 실제 production 환경에서도 이렇게 다수의 token이 존재할 가능성을 가지고 있는지.

  2. 다수의 refresh token이 존재했을때 만약 해당 refresh token이 한번 탈취 당하면 계속해서 만료전에 갱신이 가능해지는 상황인데 이에 대한 대처방법이 따로 있는것인지.(개인적인 생각으로는 user 데이터베이스에 refresh token만 따로 저장하여 유효성 검사를 진행하는 방안도 있을 것 같습니다.)

답변 2

0

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

2024. 08. 12. 10:18

안녕하세요!

1) 가능합니다. 다만 지금 한 사용자 기준으로 보고 계셔서 그렇지만 수백만의 사용자를 가정하면 애초에 토큰은 수도 없이 발행됩니다.

2) 맞습니다. 그래서 항상 https 사용 등 프론트엔드 및 백엔드에서 안전하게 토큰을 관리 해야합니다. 토큰이 탈취되고나면 더이상 '토큰' 자체의 보안 영역이 아닙니다. IP 추적 및 지리 기반의 보안을 통해 이상 징후를 찾아내고 토큰을 블랙리스팅 시켜야합니다. 어떤 형태든 토큰 방식을 사용하는 경우 Redis에 토큰 블랙리스트를 따로 관리하고 모든 서버에서 일괄적으로 모니터링 가능하도록 합니다.

감사합니다!

0

인프런 AI 인턴님의 프로필 이미지

2024. 08. 09. 20:41

안녕하세요, 인프런 AI 인턴입니다.

김유현님의 질문과 관련하여, 토큰 재발급 과정과 관련된 강의 내용에 대해 궁금증을 제기하셨네요. 특히 다수의 토큰이 존재하는 경우의 처리 방법과, 탈취된 토큰에 대한 대처 방법에 대해서 질문하셨습니다.

이와 관련해, Token 재발급시의 다수 토큰 존재 문제와 탈취 토큰에 대한 대처 법에 대한 세부 사항은 귀하의 질문과 직접적으로 일치하는 자료를 찾을 수 없었습니다. 다만, 토큰 관리 전반에 관한 지식공유자의 일반적인 연관 정보와 관련 질문에 대한 답변 내용에서, 토큰 재발급 과정에서 발생할 수 있는 일반적인 상황과 대처방안에 대한 정보를 얻을 수 있을 것입니다.

  1. refresh token 재발급과 만료에 대해서 - 이 질문에서는 refresh token 재발급의 개념에 대한 설명이 있습니다. 강의 내용에서 다루었던 refresh token 재발급 로직에 대한 해설이 포함되어 있어, 과정을 이해하는데 도움을 줄 수 있습니다.

  2. refreshToken 활용한 로그인 로직에 대한 궁금증 - 이 게시물에서는 refreshToken과 accessToken의 사용 목적 및 보안 관련 사항에 대해 설명합니다. 여러 토큰이 존재할 때의 보안 문제와 refreshToken의 관리 방법에 대한 질문에 일부 답할 수 있습니다.

실제 프로덕션 환경에서 토큰 관리 방식은 사용 사례 및 보안 요구사항에 따라 크게 달라질 수 있습니다. 일부 시스템에서는 토큰 로테이션 전략을 사용하여 다수의 토큰이 존재하는 상황을 관리합니다. 뿐만 아니라, 탈취된 토큰에 대응하기 위해 토큰 블랙리스트 시스템을 구현하여 유효하지 않은 토큰들을 관리하는 방법을 채택할 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.

현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏

추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.