티스토리 뷰

출저 : 

https://scotch.io/tutorials/authenticate-a-node-js-api-with-json-web-tokens?utm_content=bufferea64f&utm_medium=social&utm_source=facebook.com&utm_campaign=buffer


https://scotch.io/tutorials/the-anatomy-of-a-json-web-token


JWT 개념 간략 :

http://opennaru.tistory.com/94

https://blog.outsider.ne.kr/1160


JWT.IO :

http://jwt.io/


Cookies vs Tokens. Getting auth right with Angular.JS :

https://auth0.com/blog/2014/01/07/angularjs-authentication-with-cookies-vs-token/


Node Authentication 02 - JWT 실습 :

http://devofhwb.tistory.com/55


[node.js] Token 기반 인증 :

http://behonestar.tistory.com/37


JAVA API Totrial

https://auth0.com/docs/server-apis/java#1-add-java-jwt-dependency


ExpressJS 에서 로그인/로그아웃 구현하기

http://webframeworks.kr/tutorials/expressjs/auth_log_in_out/


Angularjs-authentication-with-cookies-vs-token

https://auth0.com/blog/2014/01/07/angularjs-authentication-with-cookies-vs-token/


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');
과 같은 방법으로 사용합니다.


# 실습 

http://devofhwb.tistory.com/55

'백엔드' 카테고리의 다른 글

JavaScript의 변화 (CMAScript 2015 ~)  (0) 2018.09.02
Node.js API server 학습하기  (0) 2018.09.02
[mysql] about with linux  (0) 2015.10.08
댓글