티스토리 뷰

카테고리 없음

백엔드 심화(6)

파이썬 초보 파이리 2025. 3. 12. 17:41

JWT (JSON Web Token) 구조 및 인증 절차

1. JWT 구조

JWT는 3개의 주요 부분으로 구성됩니다: HEADER, PAYLOAD, SIGNATURE. 각 부분은 마침표 (.)로 구분되어 하나의 긴 문자열을 구성합니다.

(1) Header (헤더)

  • 헤더는 JWT의 타입과 서명에 사용된 알고리즘 정보를 담고 있습니다.
  • alg: 서명에 사용된 알고리즘 (예: HS256은 HMAC SHA256)
  • typ: JWT 타입을 지정 (주로 JWT)

헤더는 Base64Url로 인코딩되어 JWT의 첫 번째 부분을 구성합니다.

(2) Payload (페이로드)

  • 페이로드는 JWT에 담을 실제 데이터를 포함하는 부분입니다.
  • 이 데이터는 보통 Claims라고 불리며, 세 가지 유형이 있습니다:
    • Registered Claims: 미리 정의된 표준 클레임 (예: iat - 발행된 시간, exp - 만료 시간 등)
    • Public Claims: 누구나 사용할 수 있는 클레임 (예: 사용자 ID)
    • Private Claims: 애플리케이션에서 사용하는 고유한 클레임

페이로드 역시 Base64Url로 인코딩됩니다.

(3) Signature (서명)

  • 서명은 헤더와 페이로드를 조합한 후, 서명 알고리즘을 사용해 생성합니다. 이 서명은 발행자만 알고 있는 비밀 키나 공개/개인 키 쌍을 사용하여 생성됩니다.
  • 서명은 JWT의 변조를 방지하는 데 사용됩니다.

2. JWT 인증 절차

  1. 클라이언트가 로그인 요청을 보냄
    • 클라이언트는 로그인 정보를 서버에 전달합니다.
    • 서버는 해당 정보를 확인하고, 사용자가 인증된 경우 JWT를 생성합니다.
  2. 서버가 JWT를 생성하여 클라이언트에 반환
    • 서버는 JWT를 생성하고, 이를 클라이언트에게 반환합니다. 클라이언트는 이를 저장합니다.
  3. 클라이언트는 요청 시 JWT를 서버에 전달
    • 클라이언트는 서버로 요청을 보낼 때 JWT를 함께 전송합니다. 이 토큰은 보통 Authorization 헤더에 포함되어 전송됩니다.
  4. 서버는 JWT를 검증
    • 서버는 클라이언트로부터 받은 JWT를 검증하여 서명이 유효한지 확인합니다.
    • 서버는 토큰을 해석하여 서명이 유효한지 확인하고, 만약 유효하다면 클라이언트의 요청을 처리합니다.
  5. 서버가 응답을 반환
    • JWT가 유효한 경우 서버는 요청을 처리하고 결과를 반환합니다.
    • 만약 JWT가 유효하지 않거나 만료되었다면, 서버는 인증 오류를 반환합니다.
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/12   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함