SpringBoot

JWT란?

개발자노트 조현진 2025. 7. 21. 17:14

JSON Web Token 이란 뭘까?

JWT란 무엇인가?

JWT는 JSON Web Token의 약자로, 두 시스템 간에 정보를 안전하게 전송하기 위해 사용되는 토큰 기반 인증 방식입니다. 예를 들어, 클라이언트와 서버 간에 인증 정보나 사용자 상태를 유지하고 싶을 때 JWT를 활용합니다. JWT는 JSON 형태로 데이터를 저장하며, 그 데이터는 특정 형식으로 안전하게 교환됩니다.

JWT의 구조

JWT는 세 부분으로 구성됩니다:

  • Header (헤더): 토큰의 타입과 해싱 알고리즘 정보를 담고 있습니다. 보통 'alg' (알고리즘)와 'typ' (타입)이라는 두 가지 속성이 포함되며, 예를 들어, {"alg": "HS256", "typ": "JWT"} 형태입니다.
  • Payload (페이로드): 주로 사용자 정보나 데이터(claims)를 포함하는 부분입니다. 여기에는 사용자 ID, 역할, 토큰 만료 시간 등의 정보가 담겨 있습니다.
  • Signature (서명): 헤더와 페이로드의 내용을 해싱한 뒤, 비밀키로 서명한 부분입니다. 이 서명을 통해 데이터가 위변조되지 않았음을 확인할 수 있습니다.

JWT의 작동 방식

JWT는 클라이언트가 서버에 인증 요청을 보내면 서버에서 토큰을 발급합니다. 이 발급된 토큰은 클라이언트에 저장되어 있으며, 이후 요청을 보낼 때 이 토큰을 포함합니다. 서버는 토큰을 검증하여 클라이언트가 올바른 사용자임을 확인합니다. 이를 통해 세션을 유지하지 않고도 사용자 인증을 할 수 있어 서버 부하가 줄어들고 확장성이 높아집니다.

JWT 사용 사례

  • API 인증: REST API에서 인증을 위해 많이 사용됩니다. 클라이언트가 매 요청마다 서버에 JWT를 포함해 보내고, 서버는 이를 통해 인증합니다.
  • SSO (Single Sign-On): JWT를 통해 여러 시스템 간의 단일 로그인을 구현할 수 있습니다. 사용자가 한 번 로그인하면 다른 시스템에서도 동일하게 인증된 상태가 유지됩니다.

'SpringBoot' 카테고리의 다른 글

SpringBoot Base64  (1) 2025.08.08
Swagger란?  (1) 2025.07.21
이미지 업로드 기능  (0) 2025.07.21
AOP  (1) 2025.07.16
SSR&CSR  (1) 2025.07.14