목차
- 생성한 JWT 응답으로 내보내기
- 구조분해 할당
- 디코딩
- 진위 여부를 비교할 서명 생성
- 쿠키의 서명과, 디코딩한 서명 일치 확인
# 1. JWT 내보내기
- 생성한 JWT를 미들웨어를 통하여 응답 객체에 실어서 클라이언트에 내보내자
- 응답으로 헤더를 생성하는 setHeader 메서드를 사용
// Controller.js
exports.main = (req,res)=>{
res.setHeader("Set-Cookie",token:jwt)
}
자, 이렇게 쿠키 생성으로 클라이언트에 JWT를 내보냈다면,
클라이언트는 서버에게 매 요청 시마다 쿠키를 동봉하여 요청할 것이다.
그럼 이제 요청 객체와 함께 동봉된 JWT 토큰이 들어있는 쿠키를 사용해보자
#2. 구조분해 할당
const [ head,pay,sign ] = jwt.split(`.`)
#3. 디코딩
디코딩하여 JSON.parse() 메서드 사용하여 객체 형태로 변환
const decodingHeader = JSON.parse(Buffer.from(head,`base64`).toString())
const decodingPayload = JSON.parse(Buffer.from(pay,`base64`).toString())
[참고] toString() 메서드의 디폴트 인자값은 utf-8이며, hex입력 시 16진수로 변경 가능
#4. 진위 여부를 확인할 서명 생성(designature)
const designature = crypto.createHmac(`sha256`,Buffer.from(`secretKey`))
.update(`${head},${pay}`)
.digest(`base64`) //64진수 변환
.replace(/[=]/g,'') //=제거
#5. 서명의 진위 여부 확인
console.log(designature === sign)
'로그인 기능 및 인증 > 1. JWT' 카테고리의 다른 글
JWT3. 하드코딩으로 JWT 생성 및 사용(1) (0) | 2022.03.03 |
---|---|
JWT2. 기본 개념 (0) | 2022.03.03 |
JWT1. 암호화의 개념 (0) | 2022.03.02 |
댓글