CS/Network

JWT 토큰

jinsang-2 2024. 8. 11. 16:03

JWT(Jason Web Token)

JWT Process

세션으로 인증하면 서버에 부하가 걸린다. 구글은 유저가 20억명이다.
그래서 나온 게 jwt, 클라이언트에게 부여해버리기, 인증만 하는것이야~

JWT = JSON Web Token 약자로 전자 서명 된 URL-safe의 JSON이다
서버는 헤더에 포함되어 있는 JWT 정보를 통해 인증

토큰 구성

AAAAAA.BBBBBB.CCCCCC
header, payload, signature

  • header : 토큰의 타입과 해시 암호화 알고리즘
  • payload : 토큰에 담을 클레임(claim) 의 정보를 포함
    • 정보의 한 조각을 클레임
    • name : value 한 쌍으로
    • 토큰에는 여러개의 클레임을 넣을 수 있다
    • 클레임의 정보 : 등록된 클레임, 공개 클레임, 비공개 클레임 세 종류
  • signature : secret key를 포함하여 암호화 되어 있다
  • jwt : 값에 의한 호출이 가능한 토큰

jwt 토큰 저장방법

  1. 로컬 스토리지 : 웹 브라우저의 클라이언트 측에서 데이터를 저장하는 방법
    • 브라우저에 내장된 api, 웹 애플리케이션이 사용자의 브라우저에 데이터를 키-값(key-value) 쌍 형태로 영구적으로 저장할 수 있도록 한다.
    • 사용자가 웹사이트를 떠나거나 브라우저를 닫았다가 다시 열더라도 유지된다.
    • 상대적으로 사용이 간단하고 쉽게 접근 가능하다.
    • 단점 : XSS(Cross-Site Scripting) 공격에 취약할 수 있음. 공격자가 자바스크립트를 통해 localStorage에 접근할 수 있다면, 토큰을 탈취할 가능성이 있음.
  2. 쿠키 : 토큰을 http 쿠키에 저장하는 방식
    • 클라이언트는 서버에 요청할 때마다 JWT가 자동으로 포함되므로, 프론트엔드 코드에서 별도로 JWT를 관리하지 않아도 됩니다.
    • HttpOnlySecure 옵션을 설정하면 XSS 공격으로부터 보호 가능.
    • 쿠키는 일반적으로 4KB 이하의 데이터를 저장, 큰 페이로드를 가진 JWT는 쿠키에 저장하기에 부적절
  3. 세션 스토리지

localStorage vs. 쿠키

  • localStorage: XSS 공격에 취약하지만, CSRF 공격에 안전합니다. 단순한 SPA 애플리케이션에서는 자주 사용됩니다.
  • 쿠키: XSS 공격에 더 안전할 수 있지만, CSRF 공격에 취약할 수 있습니다. 보안에 민감한 애플리케이션에서는 HttpOnly 쿠키에 JWT를 저장하고 CSRF 토큰을 사용하는 것이 좋습니다.

참고링크
http://www.opennaru.com/opennaru-blog/jwt-json-web-token/#:~:text=JSON%20Web%20Token%20(JWT)%EB%8A%94,%EB%8D%94%20%EC%9E%98%20%EB%8C%80%EC%9D%91%ED%95%A0%20%EC%88%98%20%EC%9E%88%EC%8A%B5%EB%8B%88%EB%8B%A4.

 

https://blog.naver.com/shino1025/221568544633

 

세션은 뭐고 JWT는 무엇일까

이번 포스팅에서는 토큰 기반 인증 시스템의 대표적인 규약인 JWT(JSON Web Token)에 대해 알아보...

blog.naver.com