CS

JWT (Json Web Token) 인증

곱창국수 2024. 2. 26. 12:18

JWT(Json Web Token) 이란

Json Web Token은 정보를 JSON 개체로 안전하게 전송하기 위한 간결하고 독립적인 방법을 정의하는 표준 (RFC 7519) 입니다. 주로 로그인 처리시 헤더 값에 인증에 필요한 정보들을 암호화시켜 직렬화된 토큰 정보를 담아 전달하여 인증 처리를 진행합니다.

 

JWT 구조

XXXXX.yyyyy.zzzzz
  • header
  • payload
  • signature

좌측 부터 해당 구조를 가집니다.

 

header

헤더는 일반적으로 토큰 유형과 사용되는 알고리즘으로 구성됩니다.

payload

토큰에서 사용할 정보의 조각 Claim이 담겨있습니다.

Claim의 종류에는 Registered Claims, Public Claims, Private Claims 3가지 종류가 있습니다.

  • Registered Claims : 미리정의된
    iss(발행자)
    exp(만료시간)
    sub(제목)
    iat(발행시간)
    jti(JWI ID)
  • Public Claims : 사용자가 정의할 수 있는 공개용 정보 전달
  • Private Claims : 당사자들 간에 정보를 공유하기 위해 만들어진 사용자 지정 . 외부에 공개되도 상관없지만 해당 유저를 특정할 수 있는 정보들을 담는다.

Signature

알고리즘은 헤더에서 정의한 알고리즘 방식(alg)를 사용한다.

(헤더 + 페이로드)와 서버가 갖고 있는 유일한 key값을 합친것을 헤더에서 정의한 알고리즘으로 암호화 한다.

 

jwt.io 확인 여기

jwt.io encoded

 

JWT 인증 예제

JWT 인증 예제

JWT 개념과 구조 & 사용 예제에 대해서 간략하게 정리해보았습니다.

사용자의 목적에 따라 Refresh Token을 발급하여 사용하는 방식이 단점을 보완할 수 있을 것 같습니다.