[번역] 초보자를 위한 간단 JWT 가이드
— Translate — 4 min read

이 게시물은 원본 아티클인 Understanding JWTs: A Simple Guide for Beginners 를 한글로 번역한 게시글입니다. 게시물 내용의 저작권은 원작자 Philip 에게 있습니다.
JWT는 무엇인가요?
JWT는 JSON Web Token의 줄임말로, 클라이언트와 서버 간 전송되는 클레임(정보)을 표현하기 위한 간결하고 URL-안전한 방법 입니다. 이는 의도한 수신자만 이해할 수 있는 암호학적으로 서명된 메모 형태의 비밀 메시지와 유사하게 생각할 수 있습니다.
JWT의 구조
JWT는 각각 3개의 구조로 나누어져 있으며 점(.)으로 구분됩니다.
- Header: 토큰에 대한 메타데이터와 HMAC SHA256 이나 RSA같이 사용한 암호화 알고리즘을 포함하고 있습니다.
- Payload: 토큰이 전달하고자 하는 실제 데이터가 들어있습니다. '클레임' 이라고 알려져 있으며 유저 정보나 추가 메타데이터를 포함할 수 있습니다.
- Signature: 암호학적으로 보 호된 증거로, 발신자를 확인하고 메시지가 전송 중 변경되지 않았음을 보장합니다.

JWT는 어떻게 동작하나요?
JWT의 진행 방식을 단계별로 보여드리겠습니다.
- 클라이언트는 본인의 자격증명을 사용해 로그인 하고, 서버에 요청을 보냅니다.
- 서버는 자격증명을 확인합니다. 만약 올바르다면 서버에서 JWT를 생성해 클라이언트에게 전송합니다.
- 클라이언트는 JWT를 일반적으로 로컬 스토리지에 저장합니다. 그리고 모든 HTTP 요청의 헤더에 포함시킵니다.
- 서버에 요청을 받으면 JWT를 검증합니다. 만약 유효하다면 클라이언트는 인증(Authenticated)되고 인가(Authorized)됩니다.
왜 JWT를 사용하나요?
JWT는 범용적입니다. 기본적으로 JSON이기 때문에 어떤 프로그래밍 언어에서도 JWT를 생성할 수 있습니다. 또한, 클라이언트에서 세션 상태를 관리하는 데 용이하게 하고, 서버 로드를 감소시켜 확장성을 높힙니다.
보안 고려사항
JWT를 사용하면 몇 가지 취약점을 불러옵니다.
- 토큰 탈취: JWT가 클라이언트에 저장되어 있음에 따라 훔칠 수 있습니다. 언제나 HTTPS같은 것으로 트랜스미션의 보안을 보장해야 합니다.
- 무효화 매커니즘 없음: JWT는 상태를 가지지 않는 특성으로 인해, 사용자로부터 개별적이거나 그룹 단위로 무효화될 수 없습니다.
- 토큰 크기: 너무 큰 데이터를 저장하면 JWT 또한 커지며, 이는 네트워크 성능에 영향을 미칠 수 있습니다.
결론적으로 JWT는 상태를 가지지 않고, 안전하며, 확장성 있는 커뮤니케이션을 제공하는 강력한 웹 개발 도구입니다. 기억하세요, 애플리케이션에서 JWT를 효과적으로 사용하는 것은, 당신의 특정 요구사항과 필요한 보안 수준에 따라 달라집니다.
이 게시글이 JWT를 이해하는데 도움을 주었으면 좋겠습니다! 😄