JWT(Json Web Token)

훈이·2022년 10월 17일

JWT란?????

JWT는 말 그대로 JSON기반의 Web 토큰인데 발급된 토큰을 JSON객체로 변환시켜서 클라이언트에게 보내주는 것입니다.

JWT의 구조


이미지 출처: https://covenant.tistory.com/201

JWT의 구조는 이미지의 안의 색깔을 보면 '.' 으로 구분되는것을 볼 수 있다.

  • 헤더(Header) : 토큰의 타입과 해시 암호화 알고리즘 정보가 있다. alg는 해싱 알고리즘을 지정하는 것이고 이 알고리즘은 토큰을 검증할 때 사용되는 서명(signature)부분에서 사용된다.
  • 내용(Payload) : 토큰의 정보가 있는 부분이며 Claim이라고 부르기도 한다. Claim은 키-값으로 이루어져 있으며 등록된 Claim, 공개 Claim, 비공개 Claim으로 구분된다.
    1. 등록된 클레임
      ss : 토큰 발급자
      sub : 토큰 제목
      aud : 토큰 대상자
      exp : 토큰 만료 시간
      nbf : 토큰 활성 날짜
      iat : 토큰이 발급된 시간
      jti : JWT 토큰 식별자
    2. 공개 클레임
      공개용 정보 전달을 위해 사용되며 충돌방지를 위해 URI형식을 사용한다.
    3. 비공개 클레임
      서버와 클라이언트가 합의하에 정의된 사용자 정의 클레임이다.
      이름이 중복되어서 충돌 가능성이 있으니 조심해야한다.
  • 서명(Signature) : 헤더와 페이로드는 암호화 된것이 아니기 때문에 누구든 디코딩을 한다면 헤더와 페이로드의 내용을 볼 수 있기 때문에 다른 사람이 위변조 했는지 검사하는 부분이다.

참고한 사이트 : https://covenant.tistory.com/201
https://thalals.tistory.com/352
https://mangbaam.github.io/cs/2022/05/11/jwt.html

profile
백엔드 개발자가 되자!

0개의 댓글