-
JWT란?SPRING/스프링 시큐리티 -JWT 2021. 9. 11. 18:38
JWT의 정의
JWT (JSON Web Token)는 개방형 표준 (RFC 7519)으로 당사자간에 정보를 JSON 객체로 안전하게 전송하기 위한 간결하고 독립적인 방법을 말합니다. 이 정보는 디지털 서명되어 있으므로 확인하고 신뢰할 수 있습니다. JWT는 비밀 (HMAC 알고리즘 사용) 또는 RSA 또는 ECDSA를 사용하는 공개 / 개인 키 쌍을 사용하여 서명 할 수 있습니다. JWT를 암호화하여 당사자 간의 보안을 제공 할 수도 있지만 서명 된 토큰에 중점을 둡니다. 서명 된 토큰은 그 안에 포함 된 클레임의 무결성을 확인할 수있는 반면 암호화 된 토큰은 해당 클레임을 다른 당사자로부터 숨깁니다. 공개 / 개인 키 쌍을 사용하여 토큰에 서명하면 서명은 개인 키를 보유한 당사자만 서명한 당사자임을 인증합니다.
JSON을 사용하는 이유
1. XML보다 Compact하므로 인코딩 용량도 작다.
2. XML에 비해 디지털 서명하는 것이 어렵다.
3. JSON 파서는 객체에 직접 매핑이 됨으로 보다 프로그래밍에 용이하다.
JWT를 사용하는 상황
- 회원 인증
JWT 장점
- 토큰을 사용하면 세션을 통한 방식과 달리 서버측 부하를 낮출 수 있고, 능률적인 접근 권한 관리가 가능함.
- 분산 / 클라우드 기반 환경에 더 잘 적응
- 별도의 인증 저장소가 필요 없음. (인증 서버에 DB가 필요하지 않음.)
JWT 단점
- 저장할 필드 수에 따라서 토큰이 커질 수 있다.
- 토큰이 모든 요청에 전송될 시에 데이터 트래픽 크기에 악영향을 및니다.
JWT 형식
Header : 헤더
- 알고리즘 형식 (RSA / SHA256 등)
Payload : 정보
- 서버와 클라이언트가 주고받는 시스템에서 실제로 사용될 정보에 대한 내용을 담고 있음.
Signature : 서명
- 헤더의 인코딩 값과 정보의 인코딩 갑을 합친 후 비밀키로 해쉬를 하여 생성함.
'SPRING > 스프링 시큐리티 -JWT' 카테고리의 다른 글
JWT 실습 프로젝트 - 4 (회원가입, 권한검증) (0) 2021.09.18 JWT 실습 프로젝트 - 3 (로그인) (0) 2021.09.17 JWT 실습 프로젝트 - 2 (Security 기본 설정, JWT 및 Security 설정) (0) 2021.09.17 JWT 실습 프로젝트 - 1 (프로젝트 생성 및 설정) (0) 2021.09.11