이 질문은 일반적인 것이지만 그다지 현명하지는 않습니다. JWT는 토큰 유형이며 OAuth는 토큰 분배 방법을 설명하는 프레임 워크입니다.
"프레임 워크"는 무엇을 의미합니까? 토큰을 요청하는 데 사용할 수 있어야하는 요청 및 응답 순서와 형식 만 있습니다. OAuthv2는 각기 다른 시나리오에 대해 별도의 "흐름"또는 권한 부여 유형을 설명하고 특정 흐름의 보안을 확장하기 위해 PKCE와 같은 다른 확장명을 갖습니다.
OAuthV2 보조금을 통한 토큰 요청의 결과는 ... 토큰입니다. 그런 다음 토큰을 보유한 모든 당사자가 API 요청 서비스를 작성할 때 토큰을 제시 할 수 있음을 의미하는 "베어러 토큰"으로 사용됩니다 (예 : "내 저장 가치 카드의 잔액은 얼마입니까?"). 무기명 토큰으로서 현금처럼 작동합니다. 잡고 있으면 사용할 수 있습니다. (현금과는 달리, 토큰은 사용하지 않고 잃어 버리지 않습니다. 아마도 대중 교통 시스템의 종일 승차권 또는 Disneyworld의 종일 승차권이 더 나은 유추입니다.)
JWT는 특정 유형의 토큰이며, JWT는 OAuth 베어러 토큰으로 절대적으로 사용될 수 있습니다. 실제로 이것은 가장 일반적인 관행입니다. "JWT vs OAuth"는이를 고려하여 사과와 사과 카트를 비교 한 것입니다.
사람들은 종종 "OAuth 토큰"은 항상 고유 한 의미를 포함하지 않는 임의의 영숫자 문자 인 불투명 토큰을 의미하며 OAuth 토큰 약국에서 부여한 다음 동일한 OAuth 약국 시스템에서만 확인할 수 있습니다. 그러나 이것이 유일한 OAuth 토큰은 아닙니다. 불투명 토큰은 한 종류의 토큰입니다. JWT는 다른 종류의 OAuth 토큰으로 사용될 수 있습니다.
반대로 JWT는 불투명하지 않습니다. JWT는 "포인터"또는 정보 참조가 아닙니다. 실제로 토큰을 가진 모든 당사자가 추출하고 해석 할 수있는 많은 특정 정보가 포함되어 있습니다. JWT에는 실제 정보가 포함되므로 JWT는 클 수 있습니다. 포함 된 클레임 및 서명에 사용 된 알고리즘에 따라 300 바이트, 500 바이트 이상. 사람들이 "JWT가 자체 검증 중"이라고 말하면 JWT 소유자는 JWT를 열고 유효성을 검사 한 후 제시된 청구에 따라 권한 결정을 내릴 수 있습니다. JWT 검증은 구조 검증, base64 인코딩 디코딩, 키가 올바른 검증, 서명 검증, 토큰에 필수 클레임이 있는지 확인, 만료 확인을 의미합니다. 단순한 것이 아닙니다. 오히려 다단계 프로세스이지만 다양한 프로그래밍 언어로 된 많은 라이브러리가 있으며 이것으로 Apigee Edge API 프록시 내에서이를 수행하는 데 도움이되는 VerifyJWT 정책이 있습니다. 요점은 모든 보유자 또는 수신자가 토큰을 확인할 수 있다는 것입니다. 이 때문에 JWT는 "페더레이션"을 지원한다고 말합니다. 누구나 토큰을 생성 할 수 있으며 누구나 토큰을 읽고 확인할 수 있습니다.
맞춤 클레임. JWT 및 불투명 한 OAuth 토큰 모두 주제에 대한 사용자 지정 클레임을 전달할 수 있습니다. 보안. 둘 다 무기명 토큰입니다. 둘 다 비밀로 보호해야합니다. 만료. 둘 다 만료로 표시 될 수 있습니다. 둘 다 새로 고칠 수 있습니다. 인증 메커니즘 또는 경험. 둘 다 동일한 사용자 경험을 제공 할 수 있습니다.