기억 휘발 방지소

[Web] JWT (Json Web Token) 본문

Web

[Web] JWT (Json Web Token)

choice91 2021. 10. 8. 23:05
728x90
반응형

📌 JWT (Json Web Token)

JWT는 일반적으로 클라이언트와 서버, 서비스와 서비스 사이 통신 시 권한 인가(Authorization)을 위해 사용하는 토큰이다.

JWT는 점(.)을 구분자로 해서 다음 3가지로 구분된다.

HEADER.PAYLOAD.SIGNATURE

 

  • HEADER: 토큰 종류와 해시 알고리즘 정보가 들어있다.
  • PAYLOAD: 토큰의 내용물로 인코딩된 부분이다.
  • SIGNATURE: 헤더와 페이로드를 합친 문자열을 서명한 값이다. 서명은 헤더의 alg에 정의된 알고리즘과 비밀키를 통해 생성된다. 시그니처는 JWT 비밀키로 만들어진다. 따라서 비밀키가 노출되면 토큰이 위조될 수 있다.

이렇게 점을 구분자로해서 헤더, 페이로드, 시그니처를 합치면 JWT 토큰이 완성된다.

 

jwt.io

위의 이미지는 jwt.io에 접속하면 볼 수 있다.

왼쪽의 Encoded가 완성된 JWT 토큰이고 오른쪽 Decoded가 토큰의 구성요소들이다.

 

✅ 장점

Payload에 데이터를 직접 담을 수 있기 때문에 데이터를 잘 담아놓으면 데이터를 데이터베이스에서 조회하지 않을 수도 있다. (단, 페이로드에는 노출되어도 되는 정보만 넣어야한다.)

 

❌ 단점

토큰의 길이가 길기 때문에 용량이 커서 요청 시 데이터 양이 증가한다.

 

 

❗ 참고한 문서

https://meetup.toast.com/posts/239

728x90
반응형

'Web' 카테고리의 다른 글

[Web] Heroku로 앱 배포하기  (0) 2021.11.10
Babel  (0) 2021.09.13
MVC (Model View Controller)  (0) 2021.09.10