JWT(JSON Web Token)는 당사자간에 JSON 개체를 안전하게 전송하기 위한
컴팩트하고 독립적인 방식을 정의하는 개방형 표준(RFC 7519) 입니다.
이 정보는 디지털 서명이 되어 있으므로 확인하고 신뢰할 수 있다.
정보를 안전하게 전달하거나 또는 유저의 권한 같은 것을 체크하기 위해 사용 하는 모듈입니다.
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.
eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.
SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
토근에 대한 메타 데이터를 포함하고 있습니다.
iss
: 토큰 발급자sub
: 토큰 제목aud
: 토큰 대상자exp
: 토큰 만료시간iat
: 토큰 발급 시간nbf
: 토큰 활성화 시간jti
: JWT의 고유 식별자서명은 헤더의 인코딩값과, 정보의 인코딩값을 합친후 주어진 비밀키로 해쉬를 하여 생성
토큰이 보낸 사람에 의해 서명이 되었으며 어떤 식으로든 변경되지 않았는지 확인하는 이용되는 서명
서명은 헤더 및 페이로드 세그먼트, 서명알고리즘, 비밀 또는 공개키를 사용여 생성
npm i jsonwebtoken
jwt.sign( payload, 비밀키, 옵션, callback )
비밀키
비밀키는 외부에 노출하면 인증의 의미가 없기 때문에 .env 등을 통해 키 보호
expiresIn
토큰의 유효 기간을 지정할 때 사용
jwt.sign( payload, 비밀키, 옵션, callback )
const accessToken = jwt.sign(test, secret, { expiresIn: "30s" });
jwt.verify(검증할 토큰, 비밀키, 콜백함수 )
jwt.verify(token, secretText, (err, user) => {
}