티스토리 뷰

WEB/etc

[WEB] JWT 토큰

퉁이리 2021. 11. 25. 10:36
반응형

JWT 토큰

 JWT는 Json Web Token의 약자로 인증에 필요한 정보들을 암호화시킨 토큰을 말한다.

 

  • HTTP 헤더에 실어 서버로 보냄
  • 별도의 세션 저장소가 필요 없음
  • 메모리 관리 용이

 

 

JSON

"key-value"로 이루어진 Data Object를 전달하기 위해, 사람이 읽을 수 있는 텍스트 기반의 데이터 교환 표준을 말한다.

 


💦JWT 토큰을 왜 사용할까?

세션과 쿠키 인증방식은 세션 저장소를 사용하지만 JWT는 세션 저장소를 사용하지 않아도 된다.

이로 인해 서버와의 연결을 최소화할 수 있다.

 

 

⭕ 이미 다룬 내용이지만 잠깐 짚고 넘어가자!

자세한 내용을 원한다면? 세션과 쿠키

 


https://jwt.io

위 사진의 왼쪽, Encoded값을 보면 3개의 색이 있다. 3개의 색은 점(.)을 기준으로 나뉜다.

각각 빨간색은 헤더, 보라색은 페이로드, 하늘색은 시그니쳐를 의미한다.

 

 

  • Header (Header)
  • Payload
  • Signature

 

다음과 같이 한 줄로 작성할 수 있다.

Header.Payload.Signature

 

 

1️⃣ Header

헤더 섹션은 일반적으로 아래와 같이 JWT의 메타데이터를 설명하는 JSON 객체다.

{
  "alg": "HS256",
  "typ": "JWT"
}

 

위 코드에서 alg 속성해싱 알고리즘을 지정한다.

typ 속성토큰의 타입을 지정한다.

 

 

 

2️⃣ Payload

페이로드 섹션은 전달해야 하는 데이터가 들어간다.

{ 
  "sub": "1234567890", 
  "name": "John Doe", 
  "admin": true 
}

 

 

 

3️⃣ Signature

시그니쳐 섹션은 데이터 변조를 방지하기 위한 섹션이다.

HMACSHA256(
  base64UrlEncode(header) + "." +
  base64UrlEncode(payload),
  secret)

 


🎾 JWT 토큰의 동작 방식

tansfil.tistory.com/58

 

 

동작 방식

1. 사용자가 로그인 정보를 서버에 보낸다.

🔽

2. 서버는 데이터베이스에서 로그인 정보를 확인한다.

🔽

3. 확인이 되면 JWT 토큰을 발급한다.

🔽

4. 발급된 JWT 토큰을 사용자가 받는다.

🔽

5. 사용자는 인증이 필요한 요청마다 JWT 토큰을 헤더에 실어 보낸다.

🔽

6. 서버는 사용자가 보낸 JWT 토큰을 복호화를 통해 검증한다.

🔽

7. 검증이 완료되면 서버는 사용자에게 요청 데이터를 보내준다.

 

 

 

 

JWT 토큰을 사용하면 우리는 위와 같은 방식으로 데이터를 서버에게 받는다.

JWT 토큰은 세션/쿠키 방식과 달리 세션 저장소를 필요로 하지 않는다는 장점이 있다.



 

 

참고 사이트

쉽게 알아보는 서버 인증 1편(세션/쿠키 , JWT)

Programmer Think

 

 

좋아요 로그인하지 않아도 누를 수 있습니다!

728x90
반응형

'WEB > etc' 카테고리의 다른 글

[WEB] AWS EC2 개념  (0) 2021.11.30
[WEB] MVC 패턴 (Model-View-Controller)  (0) 2021.11.30
[WEB] 세션과 쿠키  (0) 2021.11.25
[WEB] HTTP의 모든 것  (0) 2021.11.24
[WEB] 웹 서버란?  (2) 2021.11.24
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함