쇼핑몰을 예로 들면, 장바구니, 상품 구매, 마이 페이지 등의 기능을 사용하기 위해 사용한다.
고객 페이지 / 관리자 페이지 등, 사람에 따라 접근할 수 있는 페이지를 다르게 하기 위해 사용한다.
장점 : 서버가 저장하지 않기 때문에 부담이 없다. (RESTful)
단점 : 보안이 취약하다.
장점 : 보안이 비교적 좋아졌다.
단점 : 서버가 저장을 하기 때문에 서버에 부담을 줄 수 있다.
JSON 형태의 데이터를 안전하게 전송하기 위한 웹 토큰이다.
클라이언트에서 인증 정보를 보관하는 방법으로, 권한을 확인하기 위한 수단이다.
ex)
{
"typ": "JWT",
"alg": "HS256"
}
정보를 담고 있으며, 크게 세가지로 나뉘어 진다.
ex)
{
"iss": "velopert.com",
"exp": "1485270000000",
"https://velopert.com/jwt_claims/is_admin": true,
"userId": "11028373727102",
"username": "velopert"
}
헤더의 인코딩값과, 정보의 인코딩값을 합친후 주어진 비밀키로 해쉬를 하여 생성한다.
ex)
HMACSHA256(
base64UrlEncode(header) + "." +
base64UrlEncode(payload),
secret)
npm i jsonwebtoken
으로 설치.
let jwt = require("jsonwebtoken");
let token = jwt.sign({ foo: "bar" }, "shhhhhhhh");
console.log(token);
출력
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJmb28iOiJiYXIiLCJpYXQiOjE3MDM0MzcwMTZ9.qrtZfH9srREz9CtXFdV5ClSzSH-L7YiX76xxmZyKL4Y
오늘의 소감
크리스마스다!(강의가 있다...) 물론 약속은 없어서 크게 신경쓰이진 않지만 공휴일인데 강의가 있어서 아주 약간은 당황을 했다. 그래도 남는게 시간이고 놀아서 뭐할까 주말을 잘 쉬었으니 공부를 열심히 해야겠지라는 생각으로 열심히 공부해야겠다.