JWT Encoded 1

coding S's avatar
Apr 19, 2024
JWT Encoded 1

[ JWT 생성하고 Decoded하는 사이트 ]

jwt.io
 

[ JWT는 세 부분으로 구성 ]

notion image
Header, Payload, Signature 이 중 Payload 부분에는 전송하고자 하는 데이터(클레임)가 JSON 형태로 포함된다. 그러나 JSON은 문자열 데이터만 포함할 수 있기 때문에, 바이너리 데이터(예: 사진)를 직접 포함시킬 수 없다. 이런 문제를 해결하기 위해 Base64 인코딩을 사용한다.
 

[ Base64를 사용한다 ]

notion image
notion image
Base64 인코딩은 바이너리 데이터(ex.사진)를 문자열로 변환하는 인코딩 방식. 때문에 문자열밖에 전송하지 못하는 json에 바이너리 데이터를 얹어서 같이 전송할 수 있다! 사용자의 프로필 사진이랑 username이랑 같이 전송하려면 mutipart~~그 타입으로 밖에 안된다. 그러니까 이걸 JWT의 Payload에 포함시키고 싶을 때, 사진 파일을 Base64로 인코딩하여 문자열로 변환한 후, 이를 Payload에 포함시켜 문자열로 같이 전송!
 

[ Signature(서명) HMACSHA256 ]

notion image
notion image
세 번째 부분 Signature(서명)은 디코딩이 안되네... Header와 Payload를 합친 것을 특정 알고리즘(HMAC SHA256)으로 해싱하고, 비밀키를 사용하여 생성된다. 때문에 이 서명 부분은 단방향 해시 함수를 사용하여 생성되기 때문에, 일단 생성되면 원본 데이터로 디코딩할 수 없다. * 전자 서명을 하면 부인 방지의 용도로 이용하고자 하는 것
 

notion image
💡
우리한테 중요한 건 이것! 근데 비밀번호를 여기다가 넣으면 아주 큰일나는 겁니다.
 
Share article

codingb