개발 관련 부가 지식/기타
jwt 토큰 정의 및 구조 (간단히)
Developer-Choi
2023. 1. 2. 15:50
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를 공개키로 풀어봄