[스프링/용어] JWT

JWT (Json Web Token)

- 웹 애플리케이션에서 사용자 인증 및 정보 교환을 위해 널리 사용되는 표준이다.

JWT (Json Web Token)의 기본 구조

Header (헤더)

- 토큰의 타입 (일반적으로 "JWT")

- 사용할 서명 암호화 알고리즘

Payload (페이로드)

- 실제 전달하고자 하는 데이터(사용자 ID, 역할, 만료시간 등)를 포함하며, 이를 클레임(Claim)이라고 한다.

- 로그인 사용자 정보, 토큰 만료 시간 등이 포함된다.

- JWT 토큰은 한번 생성 후 서버에서 관리하지 않으므로, 필히 토큰 만료 시간을 설정해야한다.

- 생성된 토큰 정보가 유출되면 Decompile을 통해 정보를 볼 수 있으므로 개인 정보나 패스워드와 같은 정보는 담기지 않도록 유의해야한다.

Signature (서명)

- 헤더와 페이로드를 기반으로 생성된 서명이다.

- 비밀 키 또는 공개/개인 키 쌍을 사용해 생성된다.

- 데이터의 무결성과 신뢰성을 보장한다.

JWT(Json Web Token)의 주요 용어

Token (토큰)

- 문자열 형식의 토큰

- 클라이언트와 서버 간에 정보를 안전하게 전송하는 데 사용된다.

Claims (클레임)

- 등록 클레임(Registered Claims) : 표준으로 정의된 클레임 (eg. iss, exp, sub)

- 공개 클레임(Public Claims) : 사용자 정의 클레임, 충돌을 방지하기 위해 URL을 통해 정의할 수 있다.

- 비고개 클레임(Private Claims) : 특정 어플리케이션에서만 사용되는 클레임, 두 주체 간에 합의된 데이터이다.

Authentication (인증)

- JWT는 사용자의 인증을 처리하는 데 사용된다.

- 사용자가 로그인하면 서버가 JWT를 생성하고 이를 클라이언트에 전달하여 이후 요청에서 사용하도록 한다.

Expiration (만료 시간)

- JWT는 보안상의 이유로 만료 시간을 설정할 수있다.

- 만료 시간을 초과하면 토큰이 더 이상 유효하지 않으며, 새로 로그인하여 새로운 토큰을 발급받아야 한다.


⊙ 참고 문헌

  1. 김하은, 「백엔드 취업 파트타임 스쿨 5기:Part 09. 실전 배당금 프로젝트-Chapter 05. 회원 관리-02_JWT」, 제로베이스, 2024, https://zero-base.co.kr/
  2. ChatGPT, "JWT 용어 설명"에 대한 답변, 2024년 10월 09일, https://chatgpt.com/