jwt

김희영·2025년 10월 21일

spring

목록 보기
12/26

JWT (JSON Web Token)

인증을 위해 사용하는데, 주로 http 헤더에 담아서 보낸다.

일반적인 JWT 사용 헤더 구조

Authorization 헤더: 이 헤더는 클라이언트의 인증 자격 증명(credentials)을 포함하는 데 사용되는 표준 HTTP 헤더입니다.

Bearer 스키마: "Bearer"는 토큰의 유형을 나타내는 인증 스키마(Authentication Scheme)입니다. "이 토큰을 소지한(Bearer) 사용자에게 권한이 있다"는 의미로 사용됩니다.

<JWT 토큰 값>: 서버에서 발급받은 실제 JWT 문자열이 이 뒤에 공백으로 구분되어 붙습니다.

그리고 여기서, JWT를 HTTP 헤더 대신 쿠키(Cookie)를 통해 전달할 수도 있다.

특히, HttpOnly 속성이 설정된 쿠키를 사용하면 XSS(Cross-Site Scripting) 공격으로부터 토큰을 보호하는 데 유리!

+) 쿠키에 저장된 JWT는 브라우저가 자동으로 요청 헤더에 포함하여 서버로 전송.

그리고 작동 방식은 다음과 같다.

  • 로그인: 사용자가 서버에 ID/PW를 전송하여 인증을 요청합니다.

  • 토큰 발급: 서버는 사용자 정보를 확인한 후, Header와 Payload를 조합하고 Secret Key로 서명하여 JWT를 생성합니다.

  • 토큰 전달: 서버는 생성된 JWT를 클라이언트(브라우저)에게 응답합니다. (Header의 Authorization: Bearer 또는 쿠키)

  • API 요청: 클라이언트는 이후 모든 API 요청 시 전달받은 JWT를 포함하여 서버에 보냅니다.

  • 토큰 검증: 서버는 요청받은 JWT의 Signature를 Secret Key로 검증합니다.

  • 검증 성공: Payload에서 사용자 정보를 추출하여 요청을 처리합니다.

  • 검증 실패: 401 Unauthorized 에러를 반환하고 요청을 거부합니다.

이전 글과 같이 보면 보완이 좀 될지도
https://velog.io/@k_heeyoung/JWT-JWT

profile
내는 반드시 개발자가 되고 말것어

0개의 댓글