MDP
Redis refresh Token + Black List 써야하는 이유 - Redis refresh Token 본문
스프링부트를 활용한 회원가입, 로그인 기능을 구현하기 위해서 Redis Refresh Token을 사용하려고 한다.
회의를 하면서 Redist Refresh Token을 사용하는 이유와 Black List 활용 방법과 사용하는 이유도 함께 조사해 보려고 한다.
Redis
- 메모리 기반의 데이터 저장소
- 키 - 밸류(Value) 데이터 구조에 기반한 다양한 형태의 자료 구조를 제공하며, 데이터들을 저장할 수 있는 저장소
- 최신 버전의 레디스는 PUB/SUB 형태의 기능을 제공하여 메시지를 전달할 수 있다.
- 주로 보조데이터 저장소로 사용한다.
- 레디스 클러스터 기능을 제공하고 있어 저장 공간을 확장할 수 있다.
- 저장된 데이터를 영구적으로 디스크에 저장할 수 있는 백업 기능을 제공하므로 애플리케이션의 주 저장소로도 사용할 수 있다.
=> 빠른 처리 속도, 저장 공간 제약
Refresh Token을 사용해야 하는 이유
Access Token만 사용하면 여러가지 문제가 발생한다
- 토큰이 만료될 때마다 다시 로그인 해야한다
- 토큰의 유효 기간이 길다면 탈취당했을 때 위험하다
Refresh Token을 사용하여 위의 문제들을 해결가능 하다.
- access Token 재발급을 위해 refresh Token을 적용한다.
- access Token이 사용자를 인증할 때 사용하면 refresh Token은 access token 재발급 받을 때 사용한다.
- access Token이 탈취 당했을 때 위험을 줄이기 위해 유효 기간을 짧게 설정하고 refresh Token을 길게 설정한다.
- Refresh Token이 탈취당하면 달튀자는 무제한적으로 Access Token을 발급할 수 있다.
- access Token은 유효 기간이 짧기 때문에 탈취하더라도 오랫동안 사용할 수 없음
- refresh Token을 탈취당하면 refresh Token 만료되기 전까지 계속 access Token 발급이 가능함
- 유효기간 설정이 길수록 사용자인 상태를 오래 유지가 가능하다.
- 이러한 문제를 해결하기 위한 방법이 RTR
- RTR(Refresh Token Rotation)
- 서버가 Refresh Token을 발급할 때 DB(Redis)에 Refresh Token을 저장한다.
- 유저 refresh Token을 통해서 access Token을 재발급 받을 때 refresh Token도 재발급해서 같이 넘겨준다.
- 재발급 받은 refresh Token을 DB(Redis)에 저장한다.
- access Token 재발급을 요청하기 위해서 서버에게 refresh Token을 보내면 해당 서버는 유효성 검증을 하고 추가로 DB(Redis)에 저장된 refresh Token과 동일한지 확인한다.
결론
토큰이 탈취 당하지 않게 하는것이 제일 중요하지만 회원가입, 로그인 기능은 사용자의 개인정보 사용되는 매우 중요한 데이터이기 때문에 토큰을 탈취당하더라도 피해를 최소화하기 위해 꼭 필요한 조치라고 생각이 든다.
참고자료
Spring & Redis 활용, access Token & refresh Token 인증/인가 구현
Access Token만을 사용할 때의 단점은 다음과 같다.access token을 발급할 때 유효 기간을 정해서 발급을 하게 되는데 이 유효 기간이 지날 때마다 다시 로그인을 해야 한다. 그런데 이 유효 기간이 만
velog.io
'프로젝트 > Extra' 카테고리의 다른 글
알림 기능 및 DB 조사 - DB 조사 (1) | 2024.07.22 |
---|---|
알림 기능 및 DB 조사 - 알림 기능 (0) | 2024.07.22 |
NOSQL - MongoDB (5) | 2024.07.20 |
QR 코드를 활용하여 출퇴근 관리 하는 방법 (0) | 2024.07.17 |
실시간 채팅을 구현 - 1 (0) | 2024.07.17 |