JWT

민태영·2023년 6월 20일
0

jwt

--왜 사용하는가?--

: 본인이 아닌 임의의 브라우저에서 token을 조작하는것을 방지하기 위해

jwt사용법

1) 먼저 jwt를 다운받고 불러온다

npm install jsonwebtoken
const jwt = require("jsonwebtoken")

2) 클라이언트에 보낼 데이터를 jwt로 감싼다

const user = {
	userId: 1,
    email: "dndbxhd10@naver.com",
    name: "민태영"
}

JWT.sign(1번째인자: 보내고싶은 데이터, 2번째인자: jwt의 비밀키, 3번째인자: jwt의 인증 만료시간)

const userJWT = await JWT.sign(user, "secretKey", { expiresIn: "1h"}) 

3) jwt가 생성되면 cookie에 담는다.

생성된 jwt를 담은 userJWT를 cookieName이라는 이름을 가진 쿠키에 Bearer토큰 형식으로 할당

res.cookie("cookieName", `Bearer ${userJWT}`);
return res.status(200).end();

클라이언트에서 보내온 jwt를 검증하는 법

! 먼저 부호화 복호화란

  • 부호화: 데이터의 양을 줄이기 위해 코드화하고 압축
  • 복호화: 부호화되기전으로 되돌리는 처리

1) 복호화

const decodedVal = jwt.decode(userJWT)

결과

2) 비밀키가 일치하는지 검증

const decodedValVerify = jwt.verify(userJWT, 'secretKey')

1번째 인자에 검증하고자하는 jwt를 2번째 인자에 비밀키를 입력
(1) 비밀키가 일치하여 검증이 되면
{
userId: 1,
email: "dndbxhd10@naver.com",
name: "민태영"
}
token값이 정상출력된다.

(2) 비밀키가 일치하지 않아 검증이 안되면
JsonWebTokenError: invalid signature 에러가 뜸

profile
꿈을 꾸는 개발자

0개의 댓글