본문 바로가기

IT관련 정보

JWT(Json Web Token)란?

JWT(Json Web Token)은 웹 표준으로 서버와 클라이언트 간에 정보를 안전하게 전송하는 데 사용된다.

이름에서도 알수있듯이 JSON형식으로 데이터가 전달된다.

 

JWT는 세 가지 부분으로 이루어져 있다.

Header: JWT의 유형과 해시 알고리즘을 지정한다. 이 부분은 Base64Url로 인코딩되어 있다.

 

Payload: 실제로 전달하려는 정보가 JSON형식으로 담겨 있다.  사용자 ID,  이 부분 또한 Base64Url로 인코딩되어 있다.

 

Signature: 헤더 페이로드 Base64Url로 인코딩한 값에 서버에서 가지고 있는 비밀 키를 이용하여 서명되며 이를 통해 JWT의 무결성이 보장된다.

 

JWT는 사용자 인증을 비롯한 다양한 분야에서 사용되는데 플리케이션에서 로그인 후에 서버가 클라이언트에게 JWT 토큰을 발급하고, 이를 이용해 사용자의 권한을 확인할 수 있다.. 또한, 다른 서비스 간에 정보를 안전하게 전달할 때도 자주 쓰인다.

 

JWT와 쿠키의 차이점

 

저장 장소: JWT는 클라이언트측에 저장되는 반면 쿠키는 클라이언트와 서버 모두에서 관리된다.

 

보안성: 보안성 측면에서는 JWT는 서명을 통한 무결성 검증으로 안정성을 보장하는데 반해 쿠키는 안전하지 않은 환경에서는 쿠키를 탈취당할 우려가 존재한다.

 

용도: JWT는 정보 전달 및 인증에 주로 사용되고 쿠키는 세션 관리, 사용자 로그인 정보 유지 등에 사용된다.

 

jwt:
  header: Authorization
  secret: LucxV9apZJJXXM5bZou3BDHqB........#서버측의 Base64Url로 인코딩된 비밀 키 예시

 

통신과정

1. 사용자가 로그인을 시도함

 

2. 서버는 사용자의 인증 정보를 검증하고, 유효한 경우 해당 사용자에 대한 정보를 기반으로 JWT를 생성하여 사용자에게      전달한다.

 

3. 사용자가 서버에 요청을 보낼 때마다, 서버는 받은 JWT토큰의 서명을 검증하여 토큰의 유효성을 확인한다.

 

4. 서버에서 유효성을 확인한 후 응답과 데이터를 사용자에게 전송한다.