Skip to content
himprover
GitHubVelog

[번역] 초보자를 위한 간단 JWT 가이드

Translate4 min read

banner

이 게시물은 원본 아티클인 Understanding JWTs: A Simple Guide for Beginners 를 한글로 번역한 게시글입니다. 게시물 내용의 저작권은 원작자 Philip 에게 있습니다.

JWT는 무엇인가요?

JWT는 JSON Web Token의 줄임말로, 클라이언트와 서버 간 전송되는 클레임(정보)을 표현하기 위한 간결하고 URL-안전한 방법 입니다. 이는 의도한 수신자만 이해할 수 있는 암호학적으로 서명된 메모 형태의 비밀 메시지와 유사하게 생각할 수 있습니다.

JWT의 구조

JWT는 각각 3개의 구조로 나누어져 있으며 점(.)으로 구분됩니다.

  • Header: 토큰에 대한 메타데이터와 HMAC SHA256 이나 RSA같이 사용한 암호화 알고리즘을 포함하고 있습니다.
  • Payload: 토큰이 전달하고자 하는 실제 데이터가 들어있습니다. '클레임' 이라고 알려져 있으며 유저 정보나 추가 메타데이터를 포함할 수 있습니다.
  • Signature: 암호학적으로 보호된 증거로, 발신자를 확인하고 메시지가 전송 중 변경되지 않았음을 보장합니다.
1

JWT는 어떻게 동작하나요?

JWT의 진행 방식을 단계별로 보여드리겠습니다.

  1. 클라이언트는 본인의 자격증명을 사용해 로그인 하고, 서버에 요청을 보냅니다.
  2. 서버는 자격증명을 확인합니다. 만약 올바르다면 서버에서 JWT를 생성해 클라이언트에게 전송합니다.
  3. 클라이언트는 JWT를 일반적으로 로컬 스토리지에 저장합니다. 그리고 모든 HTTP 요청의 헤더에 포함시킵니다.
  4. 서버에 요청을 받으면 JWT를 검증합니다. 만약 유효하다면 클라이언트는 인증(Authenticated)되고 인가(Authorized)됩니다.

왜 JWT를 사용하나요?

JWT는 범용적입니다. 기본적으로 JSON이기 때문에 어떤 프로그래밍 언어에서도 JWT를 생성할 수 있습니다. 또한, 클라이언트에서 세션 상태를 관리하는 데 용이하게 하고, 서버 로드를 감소시켜 확장성을 높힙니다.

보안 고려사항

JWT를 사용하면 몇 가지 취약점을 불러옵니다.

  • 토큰 탈취: JWT가 클라이언트에 저장되어 있음에 따라 훔칠 수 있습니다. 언제나 HTTPS같은 것으로 트랜스미션의 보안을 보장해야 합니다.
  • 무효화 매커니즘 없음: JWT는 상태를 가지지 않는 특성으로 인해, 사용자로부터 개별적이거나 그룹 단위로 무효화될 수 없습니다.
  • 토큰 크기: 너무 큰 데이터를 저장하면 JWT 또한 커지며, 이는 네트워크 성능에 영향을 미칠 수 있습니다.

결론적으로 JWT는 상태를 가지지 않고, 안전하며, 확장성 있는 커뮤니케이션을 제공하는 강력한 웹 개발 도구입니다. 기억하세요, 애플리케이션에서 JWT를 효과적으로 사용하는 것은, 당신의 특정 요구사항과 필요한 보안 수준에 따라 달라집니다.

이 게시글이 JWT를 이해하는데 도움을 주었으면 좋겠습니다! 😄