티스토리 뷰
JWT 토큰
JWT는 Json Web Token의 약자로 인증에 필요한 정보들을 암호화시킨 토큰을 말한다.
- HTTP 헤더에 실어 서버로 보냄
- 별도의 세션 저장소가 필요 없음
- 메모리 관리 용이
❓ JSON
"key-value"로 이루어진 Data Object를 전달하기 위해, 사람이 읽을 수 있는 텍스트 기반의 데이터 교환 표준을 말한다.
💦JWT 토큰을 왜 사용할까?
세션과 쿠키 인증방식은 세션 저장소를 사용하지만 JWT는 세션 저장소를 사용하지 않아도 된다.
이로 인해 서버와의 연결을 최소화할 수 있다.
⭕ 이미 다룬 내용이지만 잠깐 짚고 넘어가자!
자세한 내용을 원한다면? 세션과 쿠키
위 사진의 왼쪽, 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 토큰의 동작 방식
동작 방식
1. 사용자가 로그인 정보를 서버에 보낸다.
🔽
2. 서버는 데이터베이스에서 로그인 정보를 확인한다.
🔽
3. 확인이 되면 JWT 토큰을 발급한다.
🔽
4. 발급된 JWT 토큰을 사용자가 받는다.
🔽
5. 사용자는 인증이 필요한 요청마다 JWT 토큰을 헤더에 실어 보낸다.
🔽
6. 서버는 사용자가 보낸 JWT 토큰을 복호화를 통해 검증한다.
🔽
7. 검증이 완료되면 서버는 사용자에게 요청 데이터를 보내준다.
JWT 토큰을 사용하면 우리는 위와 같은 방식으로 데이터를 서버에게 받는다.
JWT 토큰은 세션/쿠키 방식과 달리 세션 저장소를 필요로 하지 않는다는 장점이 있다.
참고 사이트
좋아요는 로그인하지 않아도 누를 수 있습니다!
'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
- 자바스크립트
- BFS
- 정렬
- CPP
- 쉽게 배우는 자바 프로그래밍
- 쉽게배우는자바프로그래밍
- java
- 그리디
- 알고리즘
- 자바
- 운영체제
- C++
- JS
- 구현
- 풀이
- Python
- 파이썬
- 답
- 해답
- Web
- 정답
- 연습문제
- OS
- 프로그래머스
- 문자열
- py
- 백준
- 정리
- 쉽게배우는
- 우종정
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |