본문 바로가기
로그인 기능 및 인증/1. JWT

JWT3. 하드코딩으로 JWT 생성 및 사용(2)

by 혀닙 2022. 3. 3.

목차

  1. 생성한 JWT 응답으로 내보내기
  2. 구조분해 할당
  3. 디코딩
  4. 진위 여부를 비교할 서명 생성
  5. 쿠키의 서명과, 디코딩한 서명 일치 확인

# 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

댓글