JSON 웹 토큰(JWT)은 온라인 네트워크에서 정보를 안전하게 통신할 때 사용하는 인터넷 표준 토큰임.JWT는 RFC 7519 웹 표준으로 지정되어 있음.JSON(JavaScript Object Notation) 객체를 사용해서 토큰에 정보들을 저장하고 있는 웹 토큰(Web Token)이라 정의할 수 있음.
↓ JWT 구성.

Header.
Payload.
Signature.
Base64로 인코딩된 헤더와 페이로드를 결합한 후 alg에 명시된 알고리즘과 비밀 키 또는 공개 키로 서명한 값.
Signature = [Header_alg에서 지정한 알고리즘](
"Base64UrlEncodedHeader + "." + Base64UrlEncodedPayload,
secretKey
)
토큰의 유효성 검증을 위한 문자열.

| - | JWT | SAML |
|---|---|---|
| 형식 | - JSON (Base64Url 인코딩) | XML (Base64 인코딩) |
| 사용 사례 | - API 인증, 마이크로서비스 통신, 모바일 및 웹 애플리케이션. | - 싱글 사인온(SSO), 엔터프라이즈 애플리케이션. |
| 전송 방식 | - HTTP 헤더 (주로 Authorization: Bearer로 전달) | - HTTP POST, 리디렉션 또는 SOAP 메시지 |
| 크기 | - JSON 기반이라 더 작고 경량화됨. | - XML 기반이라 크기가 더 크고 무거움. |
| 서명 방식 | - alg 필드에 명시된 알고리즘 사용 (예: HMAC, RSA 등) | - XML 디지털 서명 사용. |
| 사용자 정보(인증 관련 데이터) | - Claims(클레임)을 사용하여 사용자 정보 포함. | - Assertion을 사용하여 인증 및 권한 부여 정보 포함. |
| 유연성 | - 간단하고 RESTful API와 쉽게 통합 가능. | - 복잡하며 주로 엔터프라이즈 환경에서 활용. |

JwtAuthenticationFilter
UsernamePasswordAuthenticationFilter
인증 처리 프로세스
로컬 스토리지 or 세션 스토리지.
쿠키.
HTTP Only 옵션을 설정해야됨.

위의 문제점들을 해결하기 위해 나온 방식이 토큰 인증 방식.
Access Token과 Refresh Token을 클라이언트로 발급해주게 됨.
(AccessToken에는 일반적으로 세션 방식과 동일하게 userID정도만 들어감.)
이처럼 토큰 방식을 이용하게 되면 Session Storage를 사용하지 않기에 확장에도 좋고 서버 부하도 덜하다는 장점이 있지만 토큰을 탈취 당하면 안됨.
access Token의 경우 일반적으로 쿠키에 담지 않음.

