최신판 |
당신의 편집 |
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
| |
| | |
| *'''Header''': 토큰의 타입과 해시 암호화 알고리즘으로 구성
| |
| **토큰 타입, 해시 알고리즘은 사전 정의된 규격이며, 그 외의 Key-Value는 추가 가능
| |
| *'''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/
| |