메뉴 닫기

JWT 이해하기

JWT란 무엇인가?

JWT(Json Web Token)는 JSON 객체를 사용하여 정보를 안전하게 전달하기 위한 컴팩트하고 독립적인 방식입니다.
주로 인증 및 정보 교환에 사용됩니다. JWT는 세션을 서버에 저장하지 않고 클라이언트 측에서 상태를 유지할 수 있게 합니다.

JWT의 구조

jwt구조

JWT는 헤더(Header), 페이로드(Payload), 서명(Signature) 세 부분으로 구성됩니다.

헤더(Header):

  • 토큰 유형해싱 알고리즘 정보를 포함합니다.
  • 여기서 alg는 서명에 사용되는 알고리즘(예: HMAC SHA256)을 나타내고, typ는 토큰의 유형을 나타냅니다(JWT).

페이로드

사용자 정보와 기타 클레임(claim)들을 포함합니다.
클레임은 JWT에 담기는 정보의 조각들로,등록된 클레임, 공개 클레임, 비공개 클레임으로 나눌 수 있습니다.

  • 등록된 클레임: 토큰의 표준화된 정보를 나타내는 클레임들로, 예를 들어 iss(발급자), exp(만료 시간), sub(주제) 등이 있습니다.
  • 공개 클레임: 충돌이 나지 않도록 주의해야 하는 클레임들로, 예를 들어 사용자의 역할, 사용자 ID 등이 있습니다.
  • 비공개 클레임: 발급자와 수신자 사이에 협의된 클레임들로, 예를 들어 특정 비즈니스 로직을 위한 데이터 등이 있습니다.

서명: 토큰의 무결성을 확인하는 데 사용됩니다. 헤더와 페이로드를 인코딩한 후, 비밀키를 사용하여 서명됩니다.

JWT의 작동 방식

JWT Process

JWT는 서버에서 발급되고 클라이언트가 이를 저장하여 요청 시 서버에 전달합니다. 서버는 토큰의 서명을 검증하여 요청이 유효한지 확인합니다.

사용 사례

  • 사용자 인증: 사용자가 로그인하면 JWT가 발급되어 클라이언트에 저장됩니다.
  • 정보 교환: JWT를 사용하여 두 파티 간에 안전하게 정보를 교환할 수 있습니다.

보안 고려 사항

JWT를 사용할 때는 보안을 철저히 고려해야 합니다.

  • 비밀키 관리: 서명을 검증하는 비밀키는 안전하게 관리해야 합니다.
  • 짧은 만료 시간: 토큰의 만료 시간을 짧게 설정하여 만료된 토큰이 악용되지 않도록 합니다.

장점과 단점

장점:

  • 상태를 클라이언트 측에서 관리할 수 있어 서버 부하 감소
  • 다양한 시스템 간에 쉽게 사용 가능

단점:

  • 만료 전까지 유효하므로 유출 시 위험
  • 페이로드가 암호화되지 않으므로 민감한 정보는 포함하지 않음

관련 글

암호화에 대하여

Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x