Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Redis Cluster for token store #36

Open
1 task
great-park opened this issue Aug 10, 2023 · 0 comments
Open
1 task

Redis Cluster for token store #36

great-park opened this issue Aug 10, 2023 · 0 comments
Assignees
Labels
💫 feat 기능 구현 이슈 ♻️ refactor 리팩터링 이슈

Comments

@great-park
Copy link
Member

Description

Refresh token의 저장소로 Redis를 사용하면 빠른 접근 속도로 사용자 로그인 시 (refresh token 발급) 병목이 발생하지 않습니다.

또한, Redis의 TTL 설정을 통해서 자동으로 만료된 토큰을 제거하거나 만료처리하기에 적합합니다. 기존 방식대로 RDB에 저장할 경우, 스케줄 잡을 통해서 만료된 Refresh Token을 관리해야 할텐데, 이러한 작업들을 따로 할 필요없이 TTL 설정만으로 구현 가능합니다.
Redis에 저장된 Refresh Token이 손실되더라도 서비스에 큰 타격은 없습니다. 최악의 경우는 다시 로그인을 하는 경우이기 때문에 Redis를 사용하여 Refresh Token을 저장하는 방식이 실보다 득이 많다고 생각합니다.

Redis에서 Refresh Token을 관리하는 동작은 아래와 같습니다.

  • 유저가 로그인 시 Redis에 Refresh Token을 저장한다. 이때, 토큰 만료 시간에 맞게 TTL을 설정한다.
  • 유저가 로그아웃 시 Redis에 있는 Refresh Token을 만료 여부와 상관없이 삭제한다.
  • Access Token이 만료되어 재발급 요청이 들어오면, Redis에서 우선 Refresh Token을 조회한다. 만약 삭제되었거나 만료되었다면, 유저에게 재로그인을 하라는 응답을 준다. 만약 만료되지 않았다면, 요청에 담긴 token과 Redis에 저장된 token을 비교하고, 일치한다면 Access Token을 재발급하는 로직으로 넘어간다.

To-do

  • 인증 로직에서 Redis 적용하기

ETC

@great-park great-park added ♻️ refactor 리팩터링 이슈 💫 feat 기능 구현 이슈 labels Aug 10, 2023
@great-park great-park self-assigned this Aug 10, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
💫 feat 기능 구현 이슈 ♻️ refactor 리팩터링 이슈
Projects
None yet
Development

No branches or pull requests

1 participant