본문 바로가기
IT지식/Web, Server

[Web] JSON Web Token에 대해 공부해보자

by five-sun 2022. 12. 19.
728x90

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의 생김새?

JWT의 생김새

Header ?

두가지 정보를 지니고 있다.

typ : 토큰의 타입을 지정한다.

alg : 해싱 알고리즘을 지정한다. 보통 HMAC SHA256 또는 RST를 사용한다.

 

Payload ?

토큰에 담을 정보가 들어있다. 정보의 조각을 클레임(claim)이라고 부르고 name/value의 한쌍으로 이뤄져 있다.

클레임의 종류는 등록된(registerd) 클레임, 공개(public) 클레임, 비공개(private) 클레임로 크게 세 분류로 나뉘어져 있다.

 

Signature ?

JSON Web Token의 마지막 부분을 바로 서명이다. 이 서명은 헤더의 인코딩값과 정보의 인코딩 값을 합친 후 주어진 비밀키로 해쉬를 하여 생성한다.

 

출처: https://velopert.com/2389

 

[JWT] JSON Web Token 소개 및 구조 | VELOPERT.LOG

지난 포스트에서는 토큰 기반 인증 시스템의 기본적인 개념에 대하여 알아보았습니다. 이 포스트를 읽기 전에, 토큰 기반 인증 시스템에 대해서 잘 모르시는 분들은 지난 포스트를 꼭 읽어주세

velopert.com

 

728x90