What is JWT(Json Web Token)
JWT는 Peer 간 JSON 개체를 안전하게 전송하기 위한 개방형 표준이다.
JWT 사용의 핵심은 Peer 간의 비밀성을 제공할 수도 있지만, 서명된 토큰을 제공한다는 것에 있다.
서명된 토큰은 그 자체로 무결성을 확인할 수 있기 때문이다.
공개/개인 키 쌍을 사용하여 토근에 서명할 때 서명 된 토큰은 당사자를 인증 할 수 있다
JWT 형식
- JWT의 토근 구조는 .으로 구분된 세 부분이다.
- Header
- Payload
- Signature
Header에는 토큰의 타입이 JWT인지, 어떤 알고리즘으로 암/복호화가 되는지를 알려준다
Payload에는 암호화 된 데이터 가 들어간다. Payload는 Base64로 인코딩 된다
Signature는 secret 등이 들어간다. 토큰이 전송 되는 동안 변형 되었는지 확인하기 위해 사용한다
실습 - 암호화부터 복호화까지!
import jwt from "jsonwebtoken";
const email = "gobeum2su@gmail.conm";
const ssoid = "!2341234";
const userid = 2;
console.log(">>", {email, ssoid, userid});
const payload = {email, ssoid, userid};
try {
const signedJWT = jwt.sign(payload, haqqaton.token.secret, {expiresIn: "0s"});
console.log(">>", signedJWT);
const plain = jwt.verify(signedJWT, haqqaton.token.secret);
console.log("plain > ", plain);
} catch (error) {
console.log(error);
}
payload를 {eamil,ssoid,userid}로 구성한다
jwt 라이브러리에 따라 jwt.sign(payload,secret,option)을 입력하면 jwt으로 변환된다
jwt.verify(생성된 jwt 토큰,secret)을 입력하면 페이로드를 반환한다
마치며
![](https://i.imgur.com/D47or44.png)
jwt.io에 가시적으로 토큰 생성과 복호화 과정을 확인할 수 있으니 함 가보자!
base64로 인코딩 된 토큰을 굳이 왜 쓸까했는데, 주 목적이 무결성 확인에 있다는 점에서 한 수 배웠다
728x90
'DEV > Backend' 카테고리의 다른 글
TypeORM의 Where In 절 (0) | 2023.01.30 |
---|---|
Token 방식으로 로그인 구현하기 (0) | 2023.01.27 |
TypeORM Releation 다루기 (0) | 2023.01.26 |
Mac에서 MySQL 설치 (0) | 2023.01.16 |
TypeORM 다루기 (2) | 2023.01.14 |