일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 가성비노트북
- 콜오브듀티
- 개발자
- 인강용노트북
- 실기문제풀이
- 네트워크관리사
- 행정관리사3급공부
- C언어
- 노트북구매하기
- 총게임
- 심플한플래너
- 굿노트
- 실기문제
- 행정관리사합격하기
- 실기시험
- 백엔드
- 노트북추천
- 자바스크립트
- 네트워크관리사2급
- 노트북추천받기
- 실기시험예제
- C언어배우기
- 프로그래밍
- 행정관리사3급
- 네트워크관리사2급실기
- 네트워크관리사2급실기문제
- 행정관리사
- 저렴한노트북
- 코딩
- Today
- Total
잡다한 사전
(2023.11.07) JWT이란? 본문
JWT이란
JWT는 JSON형태의 데이터를 안전하게 교환하여 사용할 수 있게 해주는 겁니다. 또한 인터넷 표준으로 자리잡은 규격이며, 암호화 알고리즘에 사용이 가능하다는 특징이 있습니다.
JWT의 형식
JWT의 형식은 header.payload.signature로 이루어져 있으며, 3가지의 데이터를 포함하고 있습니다.
그렇기 때문에 JWT 형식으로 변환 된 데이터는 항상 2개의 .이 포함되어 있는 데이터여야 합니다.
header : header는 signature에서 어떤 암호화를 사용하여 생성된 데이터인지 표현합니다.
payload : 개발자가 원하는 데이터를 정장하는 부분입니다.
signature : 토큰이 변조되지 않은 정상적인 토큰인지 확인할 수 있게 도와주는 부분입니다.
JWT 주의할 점
JWT는 비밀키를 모르더라도 복호화가 가능하기 때문에 중요한 정보와 민감한 정보는 담지 않도록 해야합니다.
예를 들어 : https://jwt.io에서 쉽게 복호화가 가능하기 때문에 중요한 정보(비밀번호 및 개인정보)는 담지 않도록한다.
JWT 사용방법
1. 오픈 소스를 라이브러리을 사용합니다.
JWT를 사용하기 위해서는 jsonwebtoken 라이브러리를 사용해 줄 겁니다.
npm install jsonwebtoken
npm i jsonwebtoken
위 명령어를 입력하여 npm을 이용하여 jsonwebtoken 모듈을 설치해줍니다.
2. 원하는 JSON 데이터를 암호화하기
const jwt = require("jsonwebtoken");
// 설치한 jsonwebtoken 모듈을 가져오기 위해 require을 해줍니다.
const token = jwt.sign({ myPayloadData: 1234 }, "mysecretkey");
// payload 부분에는 개발자가 담을 데이터가 들어갑니다.
console.log(token);
위와 같이 코드를 입력하고 실행을 하면 아래와 비슷한 값이 출력되는 것을 확인 할 수 있습니다.
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJteVBheWxvYWREYXRhIjoxMjM0LCJpYXQiOjE2OTk0MTE0OTV9.USM_pr5Hh228MDh1_-CpbkIneeUQiwjYhhOP2jmmT7c
입력한 1234가 JWT를 이용하여 암호화가 된것을 확인 할 수 있습니다.
3. 암호화된 JSON파일 복호화하기
3-1 먼저 코드로 복호화하는 방법부터 알아보겠습니다.
const decodeToken = jwt.decode(token); //jwt의 payload를 확인하기 위해 사용한다.
console.log(decodeToken);
위에서 암호화한 코드를 decode하는 코드이며, decode() 함수를 사용하여 암호화된 것을 복호화하여 출력하는 것이다.
3-2 복호화가 아닌, 변조되지 않은 데이터인지 검증하는 방법입니다.
const verifyToken = jwt.verify(token, "mysecretkey");
console.log(verifyToken);
위 코드는 변조되지 않은 코드를 확인하는 코드로 만약 변조가 되어있는 상태라면 에러가 뜹니다.
3-3 jwt.io를 이용하여 복호화하여 확인하는 방법입니다.
https://jwt.io에서 위에서 암호화한 값을 복사해서 넣으면 복호화된 값을 확인 할 수 있습니다.
4. JWT를 사용해야하는 이유?
JWT가 인증서버에서 발급이 되었는지 확인하여 위변조 여부를 확인이 가능합니다. 또한 누구든지 JWT 내부에 들어있는 정보를 확인을 할 수 있다는 특징 있습니다.
'프로그래밍 언어 > node.js' 카테고리의 다른 글
(2023. 11. 14) .env 환경변수 설정하기 (0) | 2023.11.17 |
---|---|
(2023.11.09) 회원가입 API 만들기(유효성 검사) (0) | 2023.11.10 |
(2023.11.08) mongoose, nodo.js을 사용한 api 구현(1) (0) | 2023.11.08 |
[2023.11.01] node.js 시작하기 (1) | 2023.11.01 |
node.js 개발 준비 (0) | 2021.12.11 |