JWT는 서버에 상태를 저장하지 않는다는데, 그러면 로그아웃은 어떻게 구현하나요?

ㄹㅁㅇㄹㅁㅇ

ㅁㅇㄹㅁㅇㄹ

주의할 점

1. Refresh Token을 DB에 저장하지 않으면 로그아웃이 불가능하다

JWT는 무상태이므로 서버가 토큰을 무효화할 수 없습니다. Refresh Token을 Redis/DB에 저장하고, 로그아웃 시 삭제해야 실질적인 로그아웃이 구현됩니다.

2. Access Token 만료 시간을 너무 길게 설정하면 안 된다

Access Token이 1시간이면, 탈취 후 1시간 동안 악용 가능합니다. 5~15분으로 짧게 설정하고 Refresh Token으로 자동 갱신하는 것이 안전합니다.

3. Refresh Token Rotation을 안 하면 탈취 감지가 불가능하다

같은 Refresh Token을 계속 재사용하면 탈취 여부를 알 수 없습니다. 갱신할 때마다 새 Refresh Token을 발급하고, 이전 토큰이 다시 사용되면 전체 세션을 무효화해야 합니다.

댓글 로딩 중...