JWT는 JSON Web Token 의 줄임말로 JSON 객체를 사용하여 정보를 안전성 있게 전달해줍니다.
JWT 는 C, Java, Python, JavaScript 등 대부분의 프로그래밍 언어에서 지원됩니다.
JWT는필요한 모든 정보를 자체적으로 지니고 있습니다. JWT(JSON Web Token) 시스템에서 발급된 토큰은
토큰에 대한 기본정보, 전달 할 정보 (ex : 로그인 정보 등) 그리고 토큰이 검증됐다는것을 증명해주는 signature 를 포함하고있습니다.
1.헤더(HEADER) : 토큰의 종류, 해시 정보 알고리즘을 담는 곳
2.페이로드(PAYLOAD) : 실질적인 토큰의 내용물을 인코딩하여 담는 곳
3.시그니처(SIGNATURE) : 일련의 문자열로서, 이것을 통해 토큰이 변조되었는지를 확인 JWT는 넓은 범용성, 무결성 보장, 필요한 값을 자체 포함할 수 있는 성질 때문에 회원 인증, 정보 교류 등에서 자주 사용됩니다.
- 이미 토큰 자체가 인증된 정보이기 때문에 세션 저장소와 같은 별도의 저장소가 필요하지 않다.
- 세션과 다르게 클라이언트의 상태를 서버가 저장해 두지 않아도 된다
- signature을 공통 키 개인 키 암호화를 통해 막아두었기 때문에 데이터의 보완성이 늘어남
- 다른 서비스에 이용할 수 있는 공통적인 스펙으로써 사용가능
- 쿠키, 세션과는 다르게 base64 인코딩을 통한 정보를 전달하므로 전달량이 많다.
- payload에는 암호화가 되어있지 않기 때문에 민감 정보를 저장할 수 없다
- 토큰이 탈취당하면 만료될 때까지 대처가 불가능하다