security/web

JWT

chanchand 2023. 11. 27. 17:26
반응형

JWT(Json Web Token)

웹에서 사용되는 JSON 형식의 토큰에 대한 표준 규격

구조 : HEADER.PAYLOAD.SIGNATURE

 

[Header]

typ : 토큰의 유형

alg : 서명 알고리즘

 

[Payload]

사용자의 인가/인증 정보

iss : 토큰 발급자

sub : 인증 주체

iat : 발급 시각

exp : 만료 시각

 

[Signature]

헤더와 페이로드가 비밀키로 서명되어  저장된다.

 

 

JS - JWT

서버가 로그인을 완료한 클라이언트에게 발급해주는 문자열로, 이 문자열에는 사용자의 인증/인가 정보가 담겨있다.

클라이언트는 서버로 요청할 때 마다 이 정보를 함께 전송한다.

서버는 JWT 토큰을 발급할 때 서명(sign)을 하고, 클라이언트로부터 토큰을 받았을 때 검증(vertify) 한다.

 

 

const jwt = require('jsonwebtoken');

 

- sign 함수

첫번째 인자로 토큰에 담을 payload, 두번째 인자로 key, 세번째 인자로 header를 받는다.

const token = jwt.sign({'test':'test@test.com'}, 'secret_key', {keyid:1});
console.log(token); // eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IjEifQ.eyJ0ZXN0IjoidGVzdEB0ZXN0LmNvbSIsImlhdCI6MTcwMTA3MzE0OX0.wktFFYQhyFVlObh0ED-Qc_m8QPjCuY-SDoxkYRKEoOk

 

 

- verify 함수

첫번째 인자로는 토큰 문자열을 받고, 두번째 인자로는 키를 입력받는다.

토큰에 저장된 데이터를 출력한다.

const res = jwt.verify(token, 'secret_key');
console.log(res) // { test: 'test@test.com', iat: 1701073449 }

 

반응형

'security > web' 카테고리의 다른 글

Quine  (0) 2023.11.10
htmlentities  (0) 2023.10.28
MySQL DB 명령어  (0) 2023.10.17
정규 표현식  (0) 2023.09.27
file url schema  (0) 2023.08.20