-
JWT 토큰 만들기 튜토리얼!) 1. JWT 토큰에 대한 설명프로그래밍 언어/Java 2023. 12. 11. 14:02
이 글은 JWT토큰을 배워가는 사람이 적은 글로써 막 JWT토큰을 배우는 사람에게 조금이라도 도움을 주고자 적은 글입니다.
JWT는 Json Web Token의 줄임말로, JSON포맷을 이용해 사용자에 대한 속성을 저장하는 Claim 기반의 Web Token입니다.
여기서 Claim과 Token은 상당히 중요하니 의미를 잘 알아야합니다.
Claim이란 사용자의 속성이나 성질을 일컫는 말입니다.
Token이란 웹 상에서 특정한 목적으로만 사용 가능한 동전에 일종의 권한를 주는 것을 말합니다.
다시 쉽게 정리하여 말하자면, JWT는 사용자의 정보(Claim)를 JSON형식으로 저장한 토큰입니다.
아래는 Claim을 JSON형식으로 서술한 예시입니다.
{ "id": 1, "username": "user1234", "nickname": "짱구", "role": "admin" }
문제 나갑니다. 지금 현 상태가 JWT토큰의 모습일까요 아닐까요?
정답은 '아니요' 입니다.
JWT토큰에는 사용자의 정보만 들어있는 것이 아닙니다. 토큰 요청시에 실리는 Claim기반 JSON데이터들은 매우매우 민감한 사용자 정보를 담고 있기 때문에, 여러가지 암호화 알고리즘이 같이 들어가게 됩니다.
아래는 JWT의 구조입니다.
// Header (서면 방식을 정의한 JSON) { "alg": "HS256", "typ": "JWT" } // Payload (JSON Claim) { "id": 1, "username": "user1234", "nickname": "짱구", "role": "admin" } // Signature (JSON Claim에 대한 서명) HMACSHA256( base64UrlEncode(header) + "." + base64UrlEncode(payload), secret)
jwt.io에 아래의 암호화된 토큰을 넣어보면 위와 같은 데이터를 얻을수 있게됩니다.
더보기eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJ1c2VyMTIzNCIsIm5pY2tuYW1lIjoi7Kex6rWsIiwicm9sZSI6ImFkbWluIn0.xorNnHmQEpOLHZ5zRRQvu0s-Oa2sdA3TnJJfBxRyRLg
다음 포스팅은 Spring에서 JWT를 만들기위한 설정과 예제로 찾아 뵙겠습니다.
'프로그래밍 언어 > Java' 카테고리의 다른 글
Java 언어에 대한 이해 (1) 2024.02.26 객체지향 프로그래밍 파헤치기) 캡슐화를 알아보자! (1) 2023.12.15 JAVA 뽀개기) Collection - List에 대해 자세히 알아보자! (0) 2023.12.13 JAVA 뽀개기) Collection에 대해 쉽게 알아보자! (0) 2023.12.13 JAVA 뽀개기) 얕은 복사? 깊은 복사? (0) 2023.12.13