앞서
웹개발자라면 한번쯤은 꼭 들어봤을 단어다.첫 회사 입사 후 유지보수를 진행하면 대수롭지 않게 넘겼었지만 동작방식에 큰 역할을 차지하고 있는 친구다.갑자기 머릿속에 떠오른 개념이지만 생각난김에 정리해보도록 한다 알고 있던 개념이지만 정리해보자.
JWT 란?
- JWT 토큰은 JSON Web Token의 줄임말임. 사용자 인증과 정보를 안전하게 전달하기 위해 사용됨.
- 끝
JWT 사용이유 및 동작방식
- Session
- 과거 세선 또는 쿠키를 통한 인증의 한계를 해결하기 위해 등장, 전통적인 세션 기반 인증 방식에서는 서버가 각 사용자의 세션을 관리해야 했음. 이 경우, 사용자가 많아지면 서버의 부담이 커지고, 확장성 문제가 발생함
- 그림과 같이 로그인 정보를 sever 에서 관리 보관함

출처: https://velog.io/@jun7867/세선-기반-인증과-토큰-기반-인증JWT-차이점
- JWT
- 인증 정보를 담고 있는 토큰으로, 사용자가 서버에 요청할 때 이 토큰을 보내고 서버는 이 토큰을 검증하여 사용자 인증을 수행함
- 자체적으로 필요한 정보를 담고 있으므로 서버가 별도로 세션 정보를 저장할 필요 없음

출처: https://velog.io/@jun7867/세선-기반-인증과-토큰-기반-인증JWT-차이점
JWT 구조
- JWT(JSON Web Token)의 구조는 세 가지 주요 부분으로 나뉩니다: 헤더(Header), 페이로드(Payload), 서명(Signature). 이 세 부분은 점(.)으로 구분되어 있으며, 각각의 역할이 다름
- Header
- 헤더는 JWT의 첫 번째 부분으로, 토큰의 메타데이터를 포함함(토큰 타입,서명 알고리즘)
- 토큰 타입: JWT임을 명시합니다. 보통"JWT" 로 설정
- 서명 알고리즘: JWT의 서명을 생성하는 데 사용된 알고리즘을 지정 예를 들면, "HS256" (HMAC SHA-256) 또는 "RS256" (RSA SHA-256) 등
{
"alg": "HS256",
"typ": "JWT"
}
- Payload
- 페이로드는 JWT의 두 번째 부분으로, 클레임(claims)을 포함합니다. 클레임은 JWT에 담길 데이터로, 아래와 같이 사용자의 정보나 권한 등을 포함할 수 있음
{
"name": "korean hong",
"age": 31,
"sex" : "M",
"hasGirlfriend" : "Y"
}
- Signature
- 서명은 JWT의 세 번째 부분으로, 토큰의 무결성을 보장
- 헤더와 페이로드를 각각 Base64Url로 인코딩하여 두 문자열 생성 후 비밀 키(또는 공개/개인 키 쌍)와 선택된 서명 알고리즘을 사용하여 이 문자열에 대해 서명
JWT.IO
- jwt.io 접속하면 아래와 같이 원하는 값을 넣어 토큰생성 및 토큰복화를 화면으로 볼 수 있다.

마치며
내 블로그엔 순서가 없다.ㅋㅋㅋ