티스토리 뷰



JSON Web Tokens ( JWT )

JWT는 "jot" 이라고 불리기도 합니다.

JWT의 장점은 다른 프로그래밍 언어와 잘 작동한다는 점!

  • .NET, Phthon, Node.js, Java, PHP, Ruby, GO ... 등 많이 있고, 여러분은 많은 다양한 라이브러리와 호환해서 사용할 수 있습니다
  • 자체에 정보를 담는다. JWT 는 기본적인 정보를 스스로 담아 전달할 수 있습니다. ( Payload 또는 Signature 를 통해 )
  • 정보를 자체에 담기 때문에, HTTP 헤더안에 담아 사용되어집니다. ( API 인증 등 ) 또한 URL을 통해서도 가능 합니다.
JWT는 세가지 부분으로 나뉩니다
  • header
    1. JWT 타입의 선언
    2. 사용하는 해싱 알고리즘

      ex ) { "typ" : "jwt" , "alg" : "HS256" }
  • payload : payload는 토큰에 대한 정보와 함께 추가적으로 원하는 정보를 담는 부분입니다.
    1. Registered Claims
      1. iss : 토큰에 대한 발행자
      2. sub : 토큰의 제목(주제)
      3. aud : 토큰을 받는 사람의 정보(?) 
      4. exp : 토큰 만기 시간
      5. nbf : not before - 처리하는 동안 반드시 받아들이지 않을 시간 정의
      6. iat : JWT 발행 된 시간
      7. jti : JWT를 위한 식별자, 재실행되는 것을 예방할 수 있다.
    2. Public Claims
      1. 사용자 이름, 정보, 그 외 중요한 정보들을 생성할 수 있다.
    3. Private Claims
      1. 생성자와 사용자가 모두 동의하면 claim 이름을 개인적으로 사용할 수 잇음, 충돌의 위험이 있으므로 주의하여 사용해야합니다.
      ex) { "iss" : "woobong", "exp" : 1300819380", "name" : "heo woo beom", "admin" : true }
  • signature : JWT의 서명(?)을 만드는 것! header와 payload를 가지고서 해시화 하여 생성한다.
ex) var encodedString = base64UrlEncode(header) + "." _ base64UrlEncode(payload);
     HMACSHA256(encodedString, 'secret');
과 같은 방법으로 사용합니다.



댓글