본문 바로가기

개발 관련 부가 지식/기타

jwt 토큰 정의 및 구조 (간단히)

728x90
728x90

사용 이유 : jwt를 암호화하여 비밀을 제공 할 수도 있지만, 핵심은 서명된 토큰이 중점이다.

 

구조:

header.payload.signature 

(xxxxxx.yyyyyy.zzzzzz)

 

값은 base64 인코딩되어있음

 

ex) header -> { "alg" : HS256, "typ": "JWT"} 와 같은 데이터가 base64 인코딩

 

header는 서명 알고리즘이 들어감

 

payload는 등록된 클래임, 개인 클래임 등의 값으로 이루어짐

등록된 클래임(필수는 아님) :  iss(발행자), exp(만료 시간), sub(주제), aud(청중) 등 기타

개인클래임 : 당사자간에 정보를 공유하기 위한 데이터 (유저네임 등)

 

signature 는 위에 header, payload와 내 secret key를 암호화 알고리즘으로 암호환 값

 

HS256은 HMAC 방식으로 SHA256(해시) 암호화 한 것

HAMC 방식은 어떠한 시크릿 값을 포함한 암호화 방식

-> header + payload + secretkey로 sha256 해쉬하여 signauter를 만듬

검증은 서버에서 header + payload + secretkey로 sha256 해쉬하여 signauter값과 비교

 

RSA 방식은

-> header + payload 를 서버 개인키로 서명 하여 signature를 만듬

검증은 서버에서 signauter를 공개키로 풀어봄