Professional Documents
Culture Documents
(JWT) JSON Web Token 소개 및 구조 - VELOPERT.LOG
(JWT) JSON Web Token 소개 및 구조 - VELOPERT.LOG
LOG
VELOPERT.LOG
DEVELOPMENT & LIFE LOG
about
dev.log
thought.log
release.log
review.log
uncategorized.log
검색 …
};
"alg": "HS256"
카테고리
// encode to base64 카테고리 선택
const encodedPayload = new Buffer(JSON.str
.toString('bas
그 밖의 기능
.replace('=',
console.log('payload: ',encodedPayload);
/* Result:
header: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1Ni 로그인
*/
글 RSS
댓글 RSS
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9
WordPress.org
https://velopert.com/2389 4/13
2018. 10. 4. [JWT] JSON Web Token 소개 및 구조 | VELOPERT.LOG
정보 (payload)
Payload 부분에는 토큰에 담을 정보가 들어있습니다. 여기에
담는 정보의 한 ‘조각’ 을 클레임(claim) 이라고 부르고, 이는
name / value 의 한 쌍으로 이뤄져있습니다. 토큰에는 여러개
의 클레임 들을 넣을 수 있습니다.
클레임 의 종류는 다음과 같이 크게 세 분류로 나뉘어져있습니
다:
등록된 (registered) 클레임,
공개 (public) 클레임,
비공개 (private) 클레임
그럼, 하나 하나 알아볼까요?
#1 등록된 (registered) 클레임
등록된 클레임들은 서비스에서 필요한 정보들이 아닌, 토큰에
대한 정보들을 담기위하여 이름이 이미 정해진 클레임들입니
다. 등록된 클레임의 사용은 모두 선택적 (optional)이며, 이
에 포함된 클레임 이름들은 다음과 같습니다:
iss : 토큰 발급자 (issuer)
sub : 토큰 제목 (subject)
aud : 토큰 대상자 (audience)
exp : 토큰의 만료시간 (expiraton), 시간은 NumericDate
형식으로 되어있어야 하며 (예: 1480849147370) 언제나 현재
시간보다 이후로 설정되어있어야합니다.
https://velopert.com/2389 5/13
2018. 10. 4. [JWT] JSON Web Token 소개 및 구조 | VELOPERT.LOG
예제 Payload
{
"iss": "velopert.com",
"exp": "1485270000000",
"https://velopert.com/jwt_claims/is_admin":
"userId": "11028373727102",
"username": "velopert"
}
// encode to base64
const encodedPayload = new Buffer(JSON.str
.toString('bas
.replace('=',
console.log('payload: ',encodedPayload);
/* result
payload: eyJpc3MiOiJ2ZWxvcGVydC5jb20iLCJl
*/
eyJpc3MiOiJ2ZWxvcGVydC5jb20iLCJleHAiOiIxNDg1Mjc
https://velopert.com/2389 7/13
2018. 10. 4. [JWT] JSON Web Token 소개 및 구조 | VELOPERT.LOG
서명 (signature)
의 마지막 부분은 바로 서명(signature)
JSON Web Token
입니다. 이 서명은 헤더의 인코딩값과, 정보의 인코딩값을
합친후 주어진 비밀키로 해쉬를 하여 생성합니다.
서명 부분을 만드는 슈도코드(pseudocode)의 구조는 다음과
같습니다.
HMACSHA256(
base64UrlEncode(header) + "." +
base64UrlEncode(payload),
secret)
.replace('=', '');
console.log('signature: ',signature);
WE5fMufM0NDSVGJ8cAolXGkyB5RmYwCto1pQwDIqo2w
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3Mi
OiJ2ZWxvcGVydC5jb20iLCJleHAiOiIxNDg1MjcwM
DAwMDAwIiwiaHR0cHM6Ly92ZWxvcGVydC5jb20
vand0X2NsYWltcy9pc19hZG1pbiI6dHJ1ZSwidXNlc
klkIjoiMTEwMjgzNzM3MjcxMDIiLCJ1c2VybmFtZSI
6InZlbG9wZXJ0In0.WE5fMufM0NDSVGJ8cAolXGk
yB5RmYwCto1pQwDIqo2w
https://velopert.com/2389 9/13
2018. 10. 4. [JWT] JSON Web Token 소개 및 구조 | VELOPERT.LOG
마치면서..
이번 포스트에서는 JWT 의 구조가 어떻게 되어있는지, 그리
고 어떤 과정을 거쳐서 만들어지는지 배웠습니다. 토큰에서 필
요한 정보를 하나하나 인코딩하고 해싱하는것은 그렇게 대단
한 작업은 아니지만 조금은 귀찮기도 합니다. 실제로 JWT 를
서비스에서 사용할때는 우리가 직접 base64 인코딩을하거나
SHA256 해싱을 할 일은 없습니다. JWT 담당 라이브러리에
설정만 해주면 자동으로 손쉽게 만들고, 또 검증도 쉽게해주기
때문이지요.
다음 포스트에서는, Node.js 환경에서 jsonwebtoken
이라는 패키지를 사용하여 MongoDB를 연동한 Express.js
웹 서버 프레임워크에서 JWT 기반 인증 시스템을 구현해보겠
습니다.
References
JSON Web Token (JWT)
http://self-issued.info/docs/draft-ietf-oauth-
json-web-token.html
JWT – Claims and Signing
http://self-issued.info/docs/draft-jones-json-
web-token-01.html
JSON Web Token Tutorial: An Example in
Laravel and AngularJS
https://www.toptal.com/web/cookie-free-
authentication-with-json-web-tokens-an-
example-in-laravel-and-angularjs
https://velopert.com/2389 10/13
2018. 10. 4. [JWT] JSON Web Token 소개 및 구조 | VELOPERT.LOG
JSON Web Token / jwt / 토큰
Previous Post
Next Post
Comments Community
1 Login
Name
ALSO ON VELOPERT.LOG
https://velopert.com/2389 13/13