본문 바로가기

개발중/JSON Web Tokens (JWT)

[JWT🔒] JWT(Json Web Token)

728x90
반응형

JWT(Json Web Token)은 JSON 객체를 통해 안전하게 정보를 전송할 수 있는 웹표준(RFC7519) 입니다.

 

JWT는 '.'을 구분자로 세 부분으로 구분되어 있는 문자열로 이루어져 있습니다.

 

각각 헤더는 토큰 타입과 해싱 알고리즘을 저장하고,

내용은 실제로 전달할 정보,

명에는 위변조를 방지하기위한 값이 들어가게 됩니다.

 

 

JWT는 JSON 객체를 암호화 하여 만든 문자열 값으로 위, 변조가 어려운 정보라고 할 수 있습니다.

 

다른 토큰들과 달리 토큰 자체에 데이터를 가지고 있다는 특징이 있습니다.

JWT의 이러한 특징 때문에 사용자의 인증 요청시 필요한 정보를 전달하는 객체로 사용할 수 있습니다.

 

 

API 서버는 로그인 요청이 완료되면 클라이언트에게 회원을 구분할 수 있는 정보를 담은 JWT를 생성하여 전달합니다.

 

그러면 클라이언트는 이 JWT를 헤더에 담아서 요청을 하게 됩니다.

 

권한이 필요한 요청이 있을 때 마다 API 서버는 헤더에 담긴 JWT 값을 확인하고

권한이 있는 사용자인지 확인하고 리소스를 제공하게 됩니다.

 

이렇게 기존의 세션-쿠키 기반의 로그인이 아니라

JWT같은 토큰 기반의 로그인을 하게 되면

세션이 유지되지 않는 다중 서버 환경에서도 로그인을 유지할 수 있게 되고

한 번의 로그인으로 유저정보를 공유하는 여러 도메인에서 사용할 수 있다는 장점이 있습니다.

 

이 때 회원을 구분할 수 있는 정보가 담기는 곳이

바로 JWT의 payload 부분이고 이곳에 담기는 정보의 한 '조각'을 Claim 이라고 합니다.

Claim은 name / value 한 쌍으로 이루어져 있으며 당연히 여러개의 Claim들을 넣을 수 있습니다.


 

728x90
반응형