일반적으로 SpringBoot의 인증/인가 필터를 JWT에 기반하여 구현합니다.
하지만, 한번 발행된 JWT의 유효 시간을 자체적으로 만료시킬 방법이 없다는 보안 상의 취약점을 해결하기 위해 JWT와 함께 언급되는 것이 Refresh Token입니다.
Refresh Token을 구현하기 위한 참고한 모든 블로그들은 한결 같이 Redis를 통해 구현하는 것을 확인했습니다.
해당 게시글은 Redis의 특징을 통해 그 이유를 파악하고 그로 인해 얻을 수 있는 장점에 대한 내용으로 구성되었습니다.
Redis의 특징
1. 속도와 성능
- Redis는 메모리 기반 데이터 저장소로, 빠른 속도와 높은 성능을 제공합니다.
- 이는 Refresh Token 같은 인증 데이터를 빠르게 읽고 쓸 수 있어 애플리케이션의 응답 시간을 향상됩니다.
2. 데이터 구조
- Redis는 다양한 데이터 구조를 지원합니다. 문자열, 리스트, 해시, 셋, 정렬된 셋 등을 저장할 수 있어 데이터를 유연하게 다룰 수 있습니다.
- 이는 복잡한 데이터도 쉽게 저장하고 관리할 수 있음을 의미합니다.
3. Time-To-Live (TTL)
- Redis는 설정한 기간 후에는 스스로를 삭제하는 지정된 TTL 값을 가질 수 있습니다.
- 이는 데이터베이스를 불필요한 데이터로 채우지 않도록 합니다.
Redis를 활용한 Refresh Token의 구현
1. 빠른 접근
- Redis는 인메모리 DB로 빠른 읽기/쓰기 작업을 지원하여 Refresh Token을 빠르게 읽고 갱신할 수 있습니다.
- 빠른 읽기/쓰기는 로그인 시 대량의 사용자가 접속하는 것으로 인해 발생할 수 있는 병목 현상을 방지합니다.
2. 유효 기간 관리
- Redis는 키에 만료 시간을 설정할 수 있는 기능을 제공합니다.
- 이를 통해 Refresh Token의 유효 기간을 24 시간 ~ 7일까지 설정하면서도 만료 시기를 스케쥴러 등을 통해 추적하지 않아도 되기 때문에 불필요한 리소스 낭비가 없어집니다.
3. 확장성
- Redis는 클러스터링 및 복제를 지원하여 확장성을 제고합니다.
- 따라서 애플리케이션이 확장될 경우 Redis를 활용하여 Refresh Token 관리를 확장할 수 있습니다.
위와 같은 이유들로 Redis는 Refresh Token의 안전하고 효율적인 관리를 위한 이상적인 선택입니다.
Q. Redis의 특징에 대해 설명해주세요.
Q. Refresh Token의 동작 원리와 구현상 이점에 대해 설명해주세요.
참고 출처
- https://velog.io/@hong-brother/WEB-JWT-%EC%9D%B8%EC%A6%9D-%EC%A0%84%EB%9E%B5-with-Redis
'CS > 데이터베이스' 카테고리의 다른 글
[DB] 2. DB 모델링의 주요 개념 (0) | 2023.11.25 |
---|---|
[DB] 1. 데이터베이스 개요 및 관계형 DB 용어 정리 (0) | 2023.11.23 |
[ Redis ] Redis 캐싱 패턴 (0) | 2023.11.14 |
[ Redis ] SpringBoot 3.0.x + Redis로 DTO 캐싱하기 (0) | 2023.11.14 |