SteadyDrills

JWT(JSON Web Token) 본문

CS

JWT(JSON Web Token)

Drills 2024. 11. 18. 22:18

241118

JWT(JSON Web Token)

JWT(JSON Web Token)는 사용자 인증 및 정보 교환을 위해 사용되는 개방형 표준이다. JWT는 주로 웹 애플리케이션에서 클라이언트와 서버 간의 인증 정보를 안전하게 전달하는 데 사용한다.
JWT의 사용자 인증을 보다 간편하고 안전하게 처리하기 위해 만들어졌으며, 특히 마이크로서비스 아키텍처와 같은 분산 시스템에서의 인증 문제를 해결하고, 클라이언트와 서버 간의 정보 교환을 표준화하기 위해 도입되었다. 

 


JWT의 구조

  • 헤더(header): 토큰의 유형과 서명 알고리즘을 정의.
  • 페이로드(payload): 사용자 정보 및 클레임(claims) -  (전반적인 토큰 관련 정보, 속성)을 포함.
  • 서명(signature): 헤더와 페이로드를 기반으로 비밀키로 생성된 서명. 이를 통해 데이터의 무결성을 보장.

자체적인 정보: JWT는 필요한 사용자 정보를 포함하고 있어, 서버가 별도로 상태를 유지할 필요가 없다.

➡️
URL 안전성: JWT는 URL에 포함될 수 있어, 웹 애플리케이션에서 쉽게 전달될 수 있다.

 

 

JWT의 장단점

장점

  • 무상태성: 서버에서 세션 정보를 저장할 필요가 없어 확장성이 좋다.
  • 다양한 클라이언트 지원: 웹 애플리케이션, 모바일 애플리케이션 등 다양한 환경에서 사용 가능하다.
  • 보안성: 서명을 통해 데이터가 변조되지 않았음을 검증할 수 있다.

 

단점

  • 토큰 크기: JWT는 필요한 모든 정보를 포함하므로 크기가 클 수 있으며, 네트워크 대역폭에 영향을 미칠 수 있다.
    ➡️ JWT의 페이로드를 압축, 토큰 분할 등의 방법으로 보완 가능
  • 토큰 만료: 토큰이 만료되면 폐기하기 어렵고, 만료된 토큰을 관리하는 것이 복잡할 수 있다.
    ➡️ 리프레시 토큰 사용, 블랙리스트 관리를 통해보완 하고 있다.
  • 서명 알고리즘 취약성: 잘못된 알고리즘을 사용할 경우 보안 문제가 발생할 수 있다.
    ➡️ 키 관리 시스템을 도입, 안전한 알고리즘 선택(예: HS256, RS256 등)을 통해 보완.

 

세션과의 차이

  • 상태 유지: 세션은 서버에서 상태를 유지하는 반면, JWT는 클라이언트 측에서 모든 정보를 가지고 있다.
  • 확장성: JWT는 서버 간의 세션 공유가 필요 없으므로 더욱 확장성이 좋다.
  • 저장 방식: 세션은 보통 서버 메모리 또는 데이터베이스에 저장되지만, JWT는 클라이언트의 로컬 스토리지나 쿠키에 저장된다.


'CS' 카테고리의 다른 글

클라이언트(Client)란?  (0) 2024.11.26
세션 인증과 JWT 인증의 차이  (1) 2024.11.24
소프트웨어 설계 패턴  (0) 2024.11.13
HTTPS와 SSL/TLS  (0) 2024.11.05
PUT과 PATCH  (0) 2024.09.11