Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- git
- 장고
- 코딩테스트
- JWT
- 파이썬
- 도커
- github
- 자료구조
- viewsets
- Wil
- Doker
- Python
- nginx
- 연습
- Til
- redis
- docker
- flask
- 쿠키(cookie)
- ERD
- CS
- 티스토리챌린지
- SQL
- NoSQL
- web
- 아티클 스터디
- django
- 세션(Session)
- 개발공부
- 오블완
Archives
- Today
- Total
SteadyDrills
JWT(JSON Web Token) 본문
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 |