본문 바로가기
Spring/Spring

[Spring] JWT란?

by J4J 2021. 4. 7.
300x250
반응형

안녕하세요. J4J입니다.

 

이번 포스팅은 JWT가 무엇인지에 대해 적어보는 시간을 가져보려고 합니다.

 

 

JWT란?

 

JWT는 JSON Web Token의 약자로 선택적 서명 및 암호화를 사용하여 JSON 데이터를 보관하고 있는 인터넷 표준 웹 토큰입니다.

 

JWT를 사용하는 이유는 주로 사용자 인증처리를 위해서입니다.

 

기존에 사용되던 세션 처리와 달리 서버에 정보를 저장하지 않아 Stateless한 상태의 서버를 만들어주는 특징이 있습니다.

 

 

JWT 구조

 

JWT는 Header(헤더), Payload(내용), Signature(서명)의 3가지로 구분되며 다음과 같이 토큰이 만들어집니다.

 

JWT 토큰: [Base64(Header)].[Base64(Payload)].[Base64(Signature)]

 

 

  • Header(헤더)

헤더에는 토큰의 타입과 해시 암호화 알고리즘으로 구성되어 있습니다.

 

{
    "typ": "JWT",
    "alg": "HS256"
}

 

 

  • Payload(내용)

내용에는 key-value의 형태로 되어있으며 토큰에 담고싶은 데이터, 제목, 유효시간 등으로 구성되어 있습니다.

 

{
    "sub": "subject of contents",
    "exp": Date
    "userInfo": userObject,
    "price": 1234
}

 

 

  • Signature(서명)

서명에는 base64로 인코딩 된 헤더, 내용을 비밀키를 이용하여 해싱 암호화 알고리즘 처리가 이루어진 값으로 구성되어 있습니다.

 

HS256([Base64(Header)].[Base64(Payload)], secretKey)

 

 

반응형

 

 

JWT 인증 과정

 

JWT authorization process

 

 

장점

 

  • 토큰 자체에 인증정보가 포함되어 있어 별도 인증 저장소(DB, 서버 등)가 필요하지 않음
  • 분산된 서비스 환경에 대응하기 용이
  • 세션 처리와 달리 서버 부하를 낮춤 (인증 저장소가 필요없기 때문)

 

 

단점

 

  • 토큰의 만료시간이 지날때 까지 토큰과 관련된 정보를 제어할 수 없음
  • 토큰에 담기는 데이터 양이 많아질수록 토큰이 점점 커짐
  • 대부분의 요청에 토큰이 함께 전송되어 트래픽 크기에 영향을 미칠 수 있음

 

 

참조

JWT란?

JWT란?

Vue+Boot 환경에서 JWT를 이용한 인증 처리 1

JWT ( JSON WEB TOKEN ) 이란?

JWT(Json Web Token)이란? 장단점, 사용하는 상황

 

 

 

 

다음 포스팅에서는 스프링을 이용하여 직접 JWT를 구현해보도록 하겠습니다.

 

이상으로 JWT가 무엇인지에 대해 간단하게 알아보는 시간이었습니다.

 

읽어주셔서 감사합니다.

728x90
반응형

댓글