[Java] JWT 토큰이란?

김동욱·2023년 9월 4일
0

JWT

목록 보기
1/1

JWT

JWT는 JSON Web Token의 약자로 인증에 필요한 정보들을 Token에 담은 JSON입니다.
이 정보는 디지털 서명이 되어 있어서 검증 및 신뢰할 수 있으며 변조를 체크할 수 있습니다.

JWT 구조

JWT는 세 부분으로 구성되어 있으며 JSON 형태로 저장된 각 부분은 Base64Url로 인코딩되어 있습니다.

1. Header

헤더는 토큰의 타입과 사용된 알고리즘을 포함합니다.
typ : 토큰의 타입 지정
alg : 알고리즘 방식을 지정

2. Payload

페이로드는 클레임(claim)이라고 부르며 토큰에서 사용할 정보들을 저장하고 있습니다.
클레임은 크게 세 가지 유형으로 나뉩니다.
1. Registered

  • iss (Issuer): 토큰을 발행한 발행자
  • exp (Expiration Time): 토큰의 만료 시간
  • sub (Subject): 토큰의 주제
  • aud (Audience): 토큰 대상자
  • nbf (not Before): 해당 날짜 이후에 토큰이 활성화
  • iat (issued At): 토큰 발급 이후 경과 시간

2. public
임의로 정의될 수 있는 이름을 가진 클레임으로 사용자 정의 클레임입니다.
충돌을 방지하기 위해 JSON Web Token Registry를 통해 정의하거나 충돌이 없음을 보장하는 네임 스페이스를 포함해야 합니다.

3. private

서버와 클라이언트 간에 합의하여 사용되는 이름입니다.

3. Signature

서명 부분은 헤더와 페이로드를 암호화하는데 사용합니다. 각각을 Base64Url로 인코딩하고 그 값을 비밀 키를 사용해 지정된 알고리즘으로 해싱하고 이 값을 다시 Base64Url로 인코딩하여 생성합니다.

JWT 장점

  • 상태 비저장성: jwt 기반 인증 시스템에서 서버 측에서 유저의 인증 사 ㅇ태나 세션 상태를 유지하지 않아도 됩니다.
  • 확장성: 각 요청에 대해 별도의 인증 과정 없이 바로 접근 권한 확인이 가능하여 시스템 확장성에 유리합니다.
  • 모바일 애플리케이션: 쿠키를 사용하지 않기 때문에 모바일 앱에서 사용이 용이합니다.

JWT 단점

  • 토큰의 길이: JWT는 많은 정보를 포함하고 있어서 크기가 커질 수 있습니다.
  • Self-contained: JWT는 자체적으로 필요한 모든 정보를 가지고 있어서 토큰이 탈취되면 모든 정보가 노출됩니다.
profile
안녕하세요. 공부해요

0개의 댓글

Powered by GraphCDN, the GraphQL CDN