JWT 편집하기

IT위키

경고: 로그인하지 않았습니다. 편집을 하면 IP 주소가 공개되게 됩니다. 로그인하거나 계정을 생성하면 편집자가 사용자 이름으로 기록되고, 다른 장점도 있습니다.

편집을 취소할 수 있습니다. 이 편집을 되돌리려면 아래의 바뀐 내용을 확인한 후 게시해주세요.

최신판 당신의 편집
1번째 줄: 1번째 줄:
;JSON Web Token
;JSON Web Token
;RFC 7519
;[https://tools.ietf.org/html/rfc7519 RFC 7519]
;두 개체에서 JSON 객체를 사용하여 가볍고 자가수용적인 (self-contained) 방식으로 정보를 안전성 있게 전달하는 방식
; 두 개체에서 JSON 객체를 사용하여 가볍고 자가수용적인 (self-contained) 방식으로 정보를 안전성 있게 전달하는 방식


==특징==
== 특징 ==
 
* '''호환성'''
*'''호환성'''
** C, Java, Python, C++, R, C#, PHP, JavaScript, Ruby, Go, Swift 등 대부분의 주류 프로그래밍 언어에서 지원
**C, Java, Python, C++, R, C#, PHP, JavaScript, Ruby, Go, Swift 등 대부분의 주류 프로그래밍 언어에서 지원
* '''자가수용적(self-contained)'''
*'''자가수용적(self-contained)'''
** JWT 는 필요한 모든 정보를 자체적으로 지님
**JWT 는 필요한 모든 정보를 자체적으로 지님
** JWT는 토큰에 대한 기본정보, 전달 할 정보(페이로드), 전자서명
**JWT는 토큰에 대한 기본정보, 전달 할 정보(페이로드), 전자서명
* '''쉽게 전달'''
*'''쉽게 전달'''
** 웹서버의 경우 HTTP의 헤더에 넣어서 전달 할 수도 있고, URL 의 파라미터로 전달 할 수도 있음
**웹서버의 경우 HTTP의 헤더에 넣어서 전달 할 수도 있고, URL 의 파라미터로 전달 할 수도 있음
 
==구성==


== 구성 ==
;세 파트로 나뉘어지며, 각 파트는 점(.)에 의해 구분
;세 파트로 나뉘어지며, 각 파트는 점(.)에 의해 구분
ex) xxxxxxxxxxxx.yyyyyyyyyyyyyy.zzzzzzzzzzzzz
ex) xxxxxxxxxxxx.yyyyyyyyyyyyyy.zzzzzzzzzzzzz
 
* Header: 토큰의 타입과 해시 암호화 알고리즘으로 구성
*'''Header''': 토큰의 타입과 해시 암호화 알고리즘으로 구성
* Payload: claim 정보 포함. userId, expire, scope 등
**토큰 타입, 해시 알고리즘은 사전 정의된 규격이며, 그 외의 Key-Value는 추가 가능
* Signature: secret key를 포함하여 암호화한 서명정보
*'''Payload''': claim 정보 포함. userId, expire, scope 등 자유롭게 구성 가능
*'''Signature''': secret key를 포함하여 암호화한 서명 정보
 
== 예시 ==
'''header 원본:''' <syntaxhighlight lang="json">
{
  "alg": "HS256",
  "typ": "JWT"
}
</syntaxhighlight>'''payload  원본:'''<syntaxhighlight>
{
  "sub": "1234567890",
  "name": "John Doe",
  "admin": true
}
</syntaxhighlight>'''서명을 추가하여 생성된 토큰'''
 
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ
 
* Base64(header) = eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
* Base64(payload) = eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9
* Base64(signature) = TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ
 
== 절차 ==
[[파일:JWT 사용 절차.png|800x800픽셀]]
 
== 같이 보기 ==
 
* [[전자서명]]
 
== 관련 사이트 ==
 
* '''JOSE:''' http://jose.readthedocs.io/en/latest/
* '''JOSE''' '''Documents:''' https://datatracker.ietf.org/wg/jose/documents/
* '''AuthO:''' https://auth0.com/learn/json-web-tokens/
* '''JWT:''' https://jwt.io/
IT위키에서의 모든 기여는 크리에이티브 커먼즈 저작자표시-비영리-동일조건변경허락 라이선스로 배포된다는 점을 유의해 주세요(자세한 내용에 대해서는 IT위키:저작권 문서를 읽어주세요). 만약 여기에 동의하지 않는다면 문서를 저장하지 말아 주세요.
또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다. 저작권이 있는 내용을 허가 없이 저장하지 마세요!
취소 편집 도움말 (새 창에서 열림)
원본 주소 "https://itwiki.kr/w/JWT"