반응형
리프레시 토큰 삭제 방식
- 로그아웃 시 서버에서 사용자의 리프레시 토큰을 삭제하여 더 이상 새로운 액세스 토큰(access token)을 발급받을 수 없게 만드는 방식을 말합니다.
- 클라이언트 측에서 리프레시 토큰을 폐기하고 서버에서도 이를 무효화 처리합니다.
리프레시 토큰의 장점
- 간단한 구현:
- 서버에서 토큰을 단순히 삭제하면 되므로 구현이 상대적으로 쉽습니다.
- 효율성:
- 별도의 추가 데이터베이스(블랙리스트)를 유지할 필요가 없습니다.
- 빠른 무효화:
- 토큰이 삭제되면 즉시 무효화되어 추가적인 보안 우려가 적습니다.
리프레시 토큰의 단점
- 세션 관리 필요:
- 서버에서 세션과 연계된 리프레시 토큰을 관리해야 합니다. 따라서 서버 부담이 증가할 수 있습니다.
- 토큰 분실 문제:
- 리프레시 토큰을 클라이언트가 잃어버리면 서버는 이를 즉시 알 수 없으며, 일정 기간 동안 재사용 위험이 존재합니다.
블랙리스트 처리 방식
- 로그아웃 시 사용 중인 리프레시 토큰이나 액세스 토큰을 블랙리스트에 등록하여 해당 토큰의 유효성을 검증할 때 사용하지 못하도록 처리.
- 서버가 별도의 블랙리스트 저장소(예: Redis, 데이터베이스)를 유지하면서 토큰 유효성을 확인.
블랙리스트 처리 방식 장점
- 유연성:
- 기존의 JWT 방식(서버 상태를 유지하지 않음)을 유지하면서 토큰 관리 기능을 추가할 수 있습니다.
- 비정상적 접근 차단:
- 토큰 탈취나 부정 사용이 감지되었을 때, 해당 토큰만 블랙리스트에 추가하여 빠르게 차단 가능합니다.
- 분산 시스템 적합:
- 서버 상태를 완전히 공유하지 않아도 중앙 블랙리스트 시스템을 통해 여러 서버에서 유효성 확인이 가능합니다.
블랙리스트 처리 방식 단점
- 추가 저장소 필요:
- 블랙리스트를 유지하기 위한 데이터베이스나 메모리 스토리지(Redis 등)가 필요합니다.
- 성능 부담:
- 토큰 유효성을 확인할 때마다 블랙리스트를 조회해야 하므로, 성능에 부담이 될 수 있습니다.
- 토큰 만료 관리:
- 블랙리스트에 등록된 토큰이 만료되면 해당 데이터를 수동으로 삭제하거나 만료 시간까지 관리해야 합니다.
- 리프레시 토큰 삭제 방식을 추천하는 경우
- 시스템이 단일 서버 환경이고, 간단하고 빠른 로그아웃 처리가 필요한 경우.
- 사용자가 로그아웃 시 즉각적인 세션 종료를 보장해야 할 때.
- 블랙리스트 처리 방식을 추천하는 경우
- JWT 토큰을 사용하여 무상태(stateless) 아키텍처를 유지하고 싶을 때.
- 분산 시스템 환경에서 동시 사용자 규모가 크거나, 보안 이벤트(예: 토큰 탈취, 부정 로그인)에 신속히 대응해야 할 때.
반응형