올바른 CSRF 토큰없이 해당 양식을 게시하려고하면 오류 응답이 발생하며 이것이 토큰의 유틸리티입니다. 위의 예는 “멍청한” 토큰입니다. 즉, 토큰 자체에서 수집할 수 있는 고유한 의미가 없습니다. JWT가 큰 차이를 만드는 곳이기도 합니다. 일반적으로 압축CodecResolver 구현은 zip 헤더를 검사하여 사용된 알고리즘을 찾은 다음 해당 알고리즘을 지원하는 코덱 인스턴스를 반환합니다. 예: 추가 크레딧의 경우 예제 프로젝트에서 JUnit 테스트를 실행할 수 있습니다. 세 가지 테스트가 있으며 JJWT 라이브러리에서 몇 가지 기본 기능을 보여 줍니다. 첫 번째 테스트는 유효한 JWT를 만들고 성공적으로 디코딩하는 행복한 경로를 보여줍니다. 두 번째 테스트는 완전히 가짜 문자열을 JWT로 디코딩하려고 할 때 JJWT 라이브러리가 어떻게 실패하는지 보여줍니다. 마지막 테스트는 변조된 JJWT가 디코딩JWT() 메서드를 사용하여 시그니처예외를 throw하는 방법을 보여 주며, 이 예제에서 다른 끝점을 누르고 어떤 일이 발생하는지 살펴보겠습니다: 위의 setAllowedClockSkewSeconds가 사용자의 요구에 충분하지 않은 경우 타임스탬프 비교를 구문 분석하는 동안 생성된 타임스탬프는 사용자 지정 시간 원본을 통해 얻을 수 있습니다. io.jsonwebtoken.Clock 인터페이스의 구현으로 JwtParser의 setClock 메서드를 호출합니다.

예를 들어 대부분의 복잡성은 편리하고 읽기 쉬운 빌더 기반 유창한 인터페이스 뒤에 숨겨져 있으며, IDE 자동 완성에 의존하여 코드를 신속하게 작성할 수 있습니다. 다음은 위에서 설명한 대로 프로젝트를 실행 중인 경우 아래 의 JWT 예제가 프로젝트의 응답과 일치되도록 다음을 실행합니다. 예를 들어 구문 분석중인 JWS에 특정 하위 (제목) 값이 필요하므로 토큰을 신뢰하지 않을 수 있다고 가정해 보겠습니다. JwtParser에서 다양한 요구 * 방법 중 하나를 사용하여 이 작업을 수행 할 수 있습니다. 예를 들어 다른 소유권 주장또는 맞춤 클레임을 추가하려는 경우 헤더는 일반적으로 JWT인 토큰 유형과 SHA512 와 같은 서명 알고리즘의 두 부분으로 구성되며 페이로드에는 클레임이 포함됩니다. 클레임은 엔터티(일반적으로 인증된 사용자)에 대한 정보와 토큰 만료 시간과 같은 기타 데이터를 제공합니다. 클레임에는 등록, 공개 및 비공개의 세 가지 유형이 있습니다. 참고: 이 섹션의 모든 예제 코드에서 JWT는 SHA-256 알고리즘을 사용하여 HMAC로 서명됩니다. 이는 예제를 단순하게 유지하기 위한 것입니다. JJWT 라이브러리는 사용자 고유의 코드에서 활용할 수 있는 12가지 서명 알고리즘을 지원합니다. 예제 코드에는 지정된 알고리즘에 적절한 강도의 암호가 사용되는지 확인하는 SecretService라는 클래스가 포함되어 있습니다.

응용 프로그램 시작 시 각 HS 알고리즘에 대해 새 암호 집합이 만들어집니다. 비밀을 새로 고치고 명시적으로 비밀을 설정하는 끝점이 있습니다. 그런 다음 구문 분석하는 동안 SigningKeyResolver는 JwsHeader를 검사하여 아이를 얻은 다음 해당 값을 사용하여 데이터베이스와 같은 어딘가에서 키를 조회할 수 있습니다. 예를 들어 이 예제 응용 프로그램에는 10개의 끝점이 노출되어 있습니다(httpie를 사용하여 응용 프로그램과 상호 작용합니다. 여기에서 찾을 수 있습니다.) 위의 예제는 암호화되지 않고 디코딩 될 수 있지만. 모든 형태의 토큰 조작은 수신자가 감지해야 하며 토큰은 거부되어야 합니다.

Scroll Up