[매일매일] 프론트엔드 개발 일기: JWT(Json Web Token)의 장점과 단점: 왜, 언제 써야 할까?
안녕하세요! 오늘은 프론트엔드 개발자라면 꼭 알아야 할 JWT(Json Web Token) 의 장점과 단점에 대해 정리해보았습니다. 최근 웹 서비스에서 인증/인가를 구현할 때 많이 사용하는 방식인 만큼, 개념과 특성을 잘 이해해 두면 좋습니다.
🔷 JWT란?JWT(Json Web Token) 는 JSON 포맷으로 사용자 정보를 안전하게 전달하기 위해 사용하는 토큰입니다.주로 사용자 인증(Authentication)과 권한 부여(Authorization)를 위해 사용되며, Stateless한 인증 방식이라는 점이 가장 큰 특징입니다.
✅ JWT의 장점1️⃣ 서버 상태를 저장하지 않는 Stateless 인증JWT는 서버가 세션을 저장하지 않고도 인증을 처리할 수 있습니다.서버의 메모리나 데이터베이스에 사용자 상태를 유지할 필요가 없기 때문에, 서버 확장(Scale-out)이 쉽고 리소스 부담이 적습니다.
💡 왜 좋을까?서버가 여러 대로 분산되어도 토큰만 유효하다면 어디서든 인증이 가능합니다.
2️⃣ 토큰에 정보를 담아 DB 조회 없이 인증 가능JWT는 사용자 ID, 권한(Role) 등 필요한 정보를 토큰 안에 담아 발급합니다.따라서 클라이언트가 요청할 때마다 DB를 조회하지 않고도 사용자 정보를 확인할 수 있어 속도가 빠르고 부하가 적습니다.
3️⃣ 데이터 무결성 보장JWT는 서명(Signature)을 포함하기 때문에, 클라이언트가 토큰의 내용을 임의로 수정해도 서버에서 쉽게 검증할 수 있습니다.즉, 토큰이 위조되지 않았는지 검증할 수 있어 보안에 유리합니다.
⚠️ JWT의 단점1️⃣ 로그아웃을 강제하기 어렵다JWT는 Stateless한 구조라서, 서버가 클라이언트가 가진 토큰을 “취소”할 수 없습니다.토큰은 발급 시 정한 유효기간이 끝나야 만료되며, 그 이전에는 여전히 유효합니다.따라서 세션 기반 인증처럼 즉시 로그아웃시키거나 토큰을 무효화하기 어렵습니다.
2️⃣ 토큰 크기와 네트워크 부하JWT는 단순한 세션 ID보다 크기가 큽니다.사용자 정보와 서명이 포함되기 때문에, 요청/응답마다 네트워크에 추가적인 부담이 생길 수 있습니다.
📚 참고 자료 및 출처https://www.youtube.com/watch?v=1QiOXWEbqYQ
https://yceffort.kr/2021/05/drawback-of-jwt
JWT의 단점과 주의사항 https://yceffort.kr yceffort.kr
https://velog.io/@mygomi/TIL-50-JWT%EC%97%90-%EB%8C%80%ED%95%B4-%EB%B0%9C%ED%91%9C%ED%95%B4%EB%B3%B4%EA%B2%A0%EC%8A%B5%EB%8B%88%EB%8B%A4
TIL 50 | JWT 원리와 장단점 매우 빠른 템포로 개발을 배우고 있는 상황에서 주위 환경에 끌려가지 않고 지식을 최대한 흡수하기 위해서는 어떻게 해야 할까? 내가 내린 결론은 새로운 개념을 아는 것에 급급하기 보다 내가 구현해 본 기능을 온전히 이해하고 설명할 수 있는지에 집중해야 한다는 것이다. velog.io
✍️ 마무리JWT는 서버 확장성과 편리한 인증 처리를 가능하게 해주지만, 무조건적인 만능 열쇠는 아닙니다.서비스의 특성과 보안 수준에 맞춰, 세션 기반 인증과 JWT의 장단점을 비교해 선택하는 것이 중요합니다.
📌 TIP: 로그아웃/무효화 문제를 해결하기 위해 블랙리스트, 짧은 만료 + 리프레시 토큰 같은 패턴을 함께 사용하는 것이 좋습니다.