첫째, JWT는 Stateless 인증 방식을 제공합니다. 서버가 사용자의 인증 상태를 별도로 저장할 필요가 없어, 서버의 메모리나 데이터베이스 비용을 줄일 수 있습니다. 인증 상태 관리에 대한 부담이 없어지니 서버의 확장성 측면에서도 유리합니다.
둘째, JWT는 토큰에 자체적으로 필요한 정보를 포함할 수 있습니다. 사용자 ID, 권한 정보 등을 토큰 자체에 담을 수 있어, 추가적인 데이터베이스 조회 없이도 필요한 인증 관련 정보를 얻을 수 있습니다.
셋째, JWT는 서명(Signature)을 포함하고 있어 데이터의 무결성을 보장할 수 있습니다. 서버에서 발급한 JWT가 변경되었는지 검증할 수 있으므로, 클라이언트가 임의로 내용을 조작하는 것을 방지할 수 있습니다.
JWT의 단점은 무엇인가요? 🤔
먼저, 로그아웃을 강제할 수 없다는 문제가 있습니다. 액세스 토큰의 상태는 서버에서 별도로 관리하지 않기 때문에, 한 번 발급된 토큰은 만료될 때까지 유효합니다. 따라서 서버에서 임의로 토큰을 무효화할 수 없으며, 다중 로그인 제한과 같은 기능도 구현하기 어렵습니다.
또한, 페이로드 크기로 인한 네트워크 부하가 발생할 수 있습니다. JWT는 사용자 정보를 포함하므로 일반적인 세션 ID보다 용량이 크며, 이에 따라 네트워크 비용이 증가할 수 있습니다.
LIST
'Spring & Backend' 카테고리의 다른 글
| CDN이란 무엇인가요? (0) | 2025.06.30 |
|---|---|
| 쿼리 최적화를 해보셨나요? 어떤 쿼리가 문제였고, 어떻게 찾고 분석했으며, 어떻게 대응했는지 알려주세요. (2) | 2025.06.27 |
| 스프링 트랜잭션 전파 속성에 대해서 설명해주세요. (1) | 2025.06.27 |
| CSS 의사 요소(Pseudo-elements)란 무엇인가요? (4) | 2025.06.26 |
| 동시성 문제 중 경쟁 상태를 해결하려면 무엇이 보장되어야 하나요? (3) | 2025.06.26 |
