"JSON웹토큰 (JWT)"의 두 판 사이의 차이

잔글 (봇: 자동으로 텍스트 교체 (-</source> +</syntaxhighlight>, -<source +<syntaxhighlight ))
 
(사용자 2명의 중간 판 14개는 보이지 않습니다)
1번째 줄: 1번째 줄:
==개요==
==개요==
;JSON Web Token; JWT
;JSON Web Token (JWT)
;제이슨 웹 토큰
;제이슨 웹 토큰
* [[JSON]] 형식 웹 토큰
* [[JSON]] 형식 웹 토큰
* 토큰 생성에 관한 JSON 기반의 공개 표준 (RFC 7519)
* 토큰 생성에 관한 JSON 기반의 공개 표준 (RFC 7519)
* 구성: 헤더, 페이로드, 시그니처
* 구성: [[헤더]], [[페이로드]], [[시그니처]]
* 쿠키, 세션 대안
* 쿠키, 세션 대안
* 각 언어별로 다양한 구현체 라이브러리가 있음
==예시==
<syntaxhighlight lang='javascript>
header = '{"alg":"HS256","typ":"JWT"}'
payload = '{"loggedInAs":"admin","iat":1422779638}'
key          = 'secretkey'
unsignedToken = encodeBase64(header) + '.' + encodeBase64(payload)
signature    = HMAC-SHA256(key, unsignedToken)
token = encodeBase64(header) + '.' + encodeBase64(payload) + '.' + encodeBase64(signature)
// eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJsb2dnZWRJbkFzIjoiYWRtaW4iLCJpYXQiOjE0MjI3Nzk2Mzh9.gzSraSYS8EXBxLN_oWnFSRgCzcmJmMjLiuyu5CSpyHI
</syntaxhighlight>
==표준 필드==
{| class='wikitable'
! 필드 !! 영어 !! 한국어 !! 비고
|-
| <code>iss</code> || issuer || 발행자 || JWT의 발행자
|-
| <code>sub</code> || subject || 제목 || JWT의 제목
|-
| <code>aud</code> || audience || 청중 || JWT가 의도한 접수자
|-
| <code>exp</code> || expiration time || 만료일시 || JWT가 만료(무효화)되는 일시
|-
| <code>nbf</code> || not before || 시작일시 || JWT가 시작(유효화)되는 일시
|-
| <code>iat</code> || issued at || 발행일시 || JWT가 발행되는 일시
|-
| <code>jti</code> || JWT ID || JWT 아이디 || 토큰의 유니크식별자. 대소문자 구별
|-
| <code>typ</code> || token type || 토큰 타입 ||
|-
| <code>cty</code> || content type || 컨텐트 타입 || 항상 <code>JWT</code>
|-
| <code>alg</code> || message authentication code algorithm || 메시지인증코드 알고리즘 || 발행자가 시그니처를 검증하기 위해 정한 알고리즘
|}


==같이 보기==
==같이 보기==
11번째 줄: 51번째 줄:
* [[JSON]]
* [[JSON]]
* [[OAuth]]
* [[OAuth]]
* [[보안 토큰]]
* [[Bearer Token]]


==참고 자료==
==참고==
* RFC 7519
* RFC 7519
* https://jwt.io/
* {{영어위키백과|JSON Web Token}}
* http://www.joinc.co.kr/w/man/12/jwt
* http://www.joinc.co.kr/w/man/12/jwt
* https://en.wikipedia.org/wiki/JSON_Web_Token
* https://developer.okta.com/blog/2017/08/17/why-jwts-suck-as-session-tokens Why JWTs Suck as Session Tokens 《okta》 Randall Degges 2017-08-17
* https://jwt.io/


[[분류: JSON]]
[[분류: JSON]]
[[분류: 인증]]
[[분류: 인증]]
[[분류: 토큰]]
[[분류: 토큰]]

2020년 11월 2일 (월) 02:54 기준 최신판

1 개요[ | ]

JSON Web Token (JWT)
제이슨 웹 토큰
  • JSON 형식 웹 토큰
  • 토큰 생성에 관한 JSON 기반의 공개 표준 (RFC 7519)
  • 구성: 헤더, 페이로드, 시그니처
  • 쿠키, 세션 대안
  • 각 언어별로 다양한 구현체 라이브러리가 있음

2 예시[ | ]

header = '{"alg":"HS256","typ":"JWT"}'

payload = '{"loggedInAs":"admin","iat":1422779638}'

key           = 'secretkey'
unsignedToken = encodeBase64(header) + '.' + encodeBase64(payload)
signature     = HMAC-SHA256(key, unsignedToken) 

token = encodeBase64(header) + '.' + encodeBase64(payload) + '.' + encodeBase64(signature)
// eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJsb2dnZWRJbkFzIjoiYWRtaW4iLCJpYXQiOjE0MjI3Nzk2Mzh9.gzSraSYS8EXBxLN_oWnFSRgCzcmJmMjLiuyu5CSpyHI

3 표준 필드[ | ]

필드 영어 한국어 비고
iss issuer 발행자 JWT의 발행자
sub subject 제목 JWT의 제목
aud audience 청중 JWT가 의도한 접수자
exp expiration time 만료일시 JWT가 만료(무효화)되는 일시
nbf not before 시작일시 JWT가 시작(유효화)되는 일시
iat issued at 발행일시 JWT가 발행되는 일시
jti JWT ID JWT 아이디 토큰의 유니크식별자. 대소문자 구별
typ token type 토큰 타입
cty content type 컨텐트 타입 항상 JWT
alg message authentication code algorithm 메시지인증코드 알고리즘 발행자가 시그니처를 검증하기 위해 정한 알고리즘

4 같이 보기[ | ]

5 참고[ | ]

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}