JWT 토큰을 사용하고 있으며 ByteBuffer라는 클레임 중 하나가 있습니다. JWT가 성공적으로 생성되었지만 JWT 토큰을 구문 분석하고 클레임을 확인하려고하면 claimSet에 값이 없다는 오류가 발생합니다.ByteBuffer를 JWT 클레임으로 사용
여기에 내 코드가 보이는 방법은 다음과 같습니다 내가 볼 예외 메시지는 이것이다
PlainJWT jwtToken = PlainJWT.parse(jwtToken);
ReadOnlyJWTClaimsSet claimsSet = jwtToken.getJWTClaimsSet();
Map<String, Object> claims = claimsSet.getAllClaims();
ByteBuffer encryptedText = (ByteBuffer) claims.get("myObject");
:
ByteBuffer encryptedText = getEncryptedTextAsByteBuffer();
Instant timestamp = timestampSupplier.get();
JWTClaimsSet claimsSet = new JWTClaimsSet();
claimsSet.setAudience("test-audience");
claimsSet.setIssuer("test-issuer");
claimsSet.setNotBeforeTime(Date.from(timestamp));
claimsSet.setExpirationTime(Date.from(Instant.ofEpochSecond(expirationTimestamp)));
claimsSet.setClaim("myObject", encryptedText);
PlainJWT jwt = new PlainJWT(claimsSet);
return jwt.serialize();
유효성 검사 코드는 다음과 같습니다 내가 디버거를 추가
java.lang.ClassCastException: net.minidev.json.JSONObject cannot be cast to java.nio.ByteBuffer
Jwt 세대에는 유효한 비어 있지 않은 ByteBuffer가 있지만 결과로 나오는 클레임에는 "myObject"k가 있음을 확인했습니다 ey하지만 값은 빈 json String입니다. 클레임을 byteBuffer로 사용할 수 없습니까? 아니면 내가 잘못하고있는거야?
도움을 주시면 감사하겠습니다.
'claims.get ("인 myObject")''반환 JSONObject' 개체입니다하지만 당신은 여기에 코드를 작동하게하기 위해 만든 수정입니다 그것을 'ByteBuffer'로 캐스팅합니다. 'JSONObjectencryptedText = (JSONObject) claims.get ("myObject");'JSONObject가 포함하고있는 것을 보도록하십시오. – tsolakp