JSON Web Token 이란?
JSON Web Token(JWT)는 웹표준으로서 두 개체에서 JSON 객체를 사용하여 가볍고 자가수용적인 방식으로 정보를 안정성 있게 전달해준다고 한다.
수많은 프로그래밍 언어에서 지원이 된다.(C, Java, Python, C++, R, C#, PHP, JavaScript, Ruby, Go, Swift)
JWT는 자가수용적이므로, 두 개체 사이에서 손쉽게 전달될 수 있다. 웹서버의 경우 HTTP의 헤더에 넣어서 전달 할 수 있고, URL의 파라미터로 전달 할 수도 있다고 한다.
JWT는 어떤 상황에서 사용되는가?
회원 인증 : JWT가 사용하는 가장 흔한 시나리오이다. 유저가 로그인을 하면, 서버는 유저의 정보에 기반한 토큰을 유저에게 발급해준다. 그 후, 유저가 서버에 요청을 할 때마다 JWT를 포함하여 전달한다.해당 토큰이 유효하고 인증됐는지를 검증하고, 유저가 요청한 작업에 권한이 있는지를 확인하여 작업을 처리한다.
정보교류 : JWT는 두 개체 사이에서 안정성있게 정보를 교환하기에 좋은 방법이다. 그 이유는 정보가 sign이 되어 있기 때문에 정보를 보낸이가 바뀌진 않았는지, 정보가 도중에 조작되지는 않았는지 검증할 수 있다.
JWT의 생김새?
Header ?
두가지 정보를 지니고 있다.
typ : 토큰의 타입을 지정한다.
alg : 해싱 알고리즘을 지정한다. 보통 HMAC SHA256 또는 RST를 사용한다.
Payload ?
토큰에 담을 정보가 들어있다. 정보의 조각을 클레임(claim)이라고 부르고 name/value의 한쌍으로 이뤄져 있다.
클레임의 종류는 등록된(registerd) 클레임, 공개(public) 클레임, 비공개(private) 클레임로 크게 세 분류로 나뉘어져 있다.
Signature ?
JSON Web Token의 마지막 부분을 바로 서명이다. 이 서명은 헤더의 인코딩값과 정보의 인코딩 값을 합친 후 주어진 비밀키로 해쉬를 하여 생성한다.
'IT지식 > Web, Server' 카테고리의 다른 글
[Web] CI/CD에 대해 공부해보자 (0) | 2022.12.21 |
---|---|
[Web] 유닛 테스트, 통합 테스트, 기능 테스트에 대해 공부해보자 (0) | 2022.12.21 |
[Server] 토큰 기반 인증과 세션 기반 인증을 공부해보자 (2) | 2022.12.17 |
[Web] OAuth에 대해 공부해보자 (0) | 2022.12.15 |
[Web] JSON에 대해 공부해보자. (0) | 2022.12.15 |