반응형
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 |