You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
리프레시 토큰 적용했습니다~!
리프레시 토큰을 이용할 땐 보안을 위해 토큰 검증 로직이 필수입니다.
그래서 저는 RTR과 블랙리스트 검증 로직을 추가했습니다~!
RTR(Refresh Token Rotation)
동작 원리
사용자가 처음 로그인 할 때, 액세스 토큰 + 리프레시 토큰 발급
액세스 토큰이 만료되면, 사용자는 기존 리프레시 토큰을 사용하여 새 액세스 토큰을 요청함
서버가 새 액세스 토큰과 함께 새로운 리프레시 토큰을 발급함. 동시에 기존 리프레시 토큰은 폐기.
한계
해커가 리프레시 토큰을 탈취한 상태에서 사용자보다 먼저 액세스 토큰을 요청했다면?
사용자가 AT를 재발급 받으려 해도 (정상이었던)Refresh Token이 Redis에 존재하지 않기 때문에 재발급을 받을 수 없다.
선수를 뺏길 때 문제가 발생하는 것이다.
내가 보완한 방법
만료된 리프레시 토큰으로 요청이 들어오면 기존 리프레시 토큰을 삭제하여 로그아웃 처리를 한다.
이렇게 하면 해커가 사용자보다 먼저 액세스 토큰을 요청하더라도, 정상 사용자는 로그인만 다시 하면 문제 없이 토큰을 발급받을 수 있음.
또한, 해커가 가진 리프레시 토큰도 만료시켜 더 이상 사용할 수 없게 된다.
📝 이슈 설명
리프레시 토큰 적용했습니다~!
리프레시 토큰을 이용할 땐 보안을 위해 토큰 검증 로직이 필수입니다.
그래서 저는 RTR과 블랙리스트 검증 로직을 추가했습니다~!
RTR(Refresh Token Rotation)
해커가 리프레시 토큰을 탈취한 상태에서 사용자보다 먼저 액세스 토큰을 요청했다면?
사용자가 AT를 재발급 받으려 해도 (정상이었던)Refresh Token이 Redis에 존재하지 않기 때문에 재발급을 받을 수 없다.
선수를 뺏길 때 문제가 발생하는 것이다.
만료된 리프레시 토큰으로 요청이 들어오면 기존 리프레시 토큰을 삭제하여 로그아웃 처리를 한다.
이렇게 하면 해커가 사용자보다 먼저 액세스 토큰을 요청하더라도, 정상 사용자는 로그인만 다시 하면 문제 없이 토큰을 발급받을 수 있음.
또한, 해커가 가진 리프레시 토큰도 만료시켜 더 이상 사용할 수 없게 된다.
레디스에 데이터를 업데이트하는 횟수가 많아져서 서버 비용이 많이 나올 수도 있다..
참고 1
참고 2
블랙리스트
현재는 로그아웃 시 리프레시 토큰만 삭제되지만, 액세스 토큰은 남아있음.
이로 인해 유효 기간 내에 로그아웃한 사용자도 계속 액세스할 수 있는 보안 문제가 발생할 가능성 有
☑️ TODO
리프레시 토큰
RTR
블랙리스트
The text was updated successfully, but these errors were encountered: