redis
Redis를 이용한 토큰 탈취 대응 시나리오(feat. Refresh Token Rotation)
Redis를 이용한 토큰 탈취 대응 시나리오(feat. Refresh Token Rotation)
2023.06.19Redis를 이용한 토큰 탈취 대응 시나리오(feat. Refresh Token Rotation) 문제 상황1. 유효기간이 긴 Refresh Token이 탈취된 경우-> 이 경우는 간단히 Refresh Token Rotation을 떠올릴 수 있다. 하지만 아래의 문제까지 커버가 가능할까?2. 탈취한 Refresh Token으로 정상 유저보다 먼저 Access Token을 재발급 받는 경우-> Refresh Token Rotation을 적용 해도, 정상유저보다 먼저 Refresh Token을 재발급 받으면 어떻게 해야하나?3. 토큰이 탈취된 경우, 한 명의 사용자에 Refresh Token이 여러개 생성되는 경우-> 여러개 생성된 Refresh Token을 가지고 각각 Access Token을 발급받을 수..
Redis를 사용하는 이유 (feat. Refresh Token)
Redis를 사용하는 이유 (feat. Refresh Token)
2023.06.18왜 Redis를 사용하는가? Redis는 key-value 쌍으로 데이터를 관리할 수 있는 데이터 스토리지이다. 데이터베이스라고 표현하지 않은 이유는 기본적으로 Redis는 In-Memory 로 데이터를 관리하므로, 저장된 데이터가 영속적이지 않기 때문이다. Redis는 Remote Dictionary Server의 약자로 키(Key) - 값(Value) 쌍의 해시 맵과 같은 구조를 가진 비관계형(NoSQL) 데이터베이스 관리 시스템(DBMS)이다. 데이터가 HDD나 SDD가 아니라 RAM에 저장되어지기 때문에 데이터를 영구적으로 저장할 수 없는 대신, 굉장히 빠른 액세스 속도를 보장받을 수 있다. 빠른 액세스 속도와 휘발성 이라는 특징으로 보통 캐시의 용도로 Redis를 사용한다. Refresh Tok..
다중 서버 환경에서의 세션 불일치 문제와 해결 방법
다중 서버 환경에서의 세션 불일치 문제와 해결 방법
2023.06.16다중 서버 환경에서의 세션 불일치 문제와 해결 방법 세션 불일치 문제는 단일 서버 환경에서는 발생하지 않으므로 따로 걱정하지 않아도 된다. 하지만, 최근 웹 서비스는 대부분 수직 확장(Scale Up)이 아닌 수평 확장(Scale out) 으로 서버를 확장하기 때문에 일반적으로 다중 서버 환경일 것 이다. 이런 다중 서버 환경에서는 세션 불일치 문제가 발생할 수 있다. 기본적으로 세션은 서버의 메모리(RAM)에 저장되기 때문이다. 예를 들어, 우리가 서버를 수평적으로 확장하기 위해 A, B, C 총 3대의 서버를 설치했다고 가정하자. 이때, 로드 밸런서는 유저의 요청이 들어올 때 마다 A -> B -> C -> A ... 순서대로 요청을 분산 한다고 가정하자.(이를 라운드로빈 방식이라고 한다.) 가운데 ..