Я пытался создать токен JWT ("JOT") для аутентификации моего вызова API. Всякий раз, когда я пытаюсь создать токен с подписью RSA512, я получаю сообщение об ошибке «1001 *»
java.lang.IllegalArgumentException: подписи RSA должны быть вычислены с использованием RSA PrivateKey. Указанный ключ типа javax.crypto.spec.SecretKeySpec не является RSA PrivateKey.
Я использую код ниже:
SignatureAlgorithm signatureAlgorithm = SignatureAlgorithm.RS512;
long nowMillis = System.currentTimeMillis();
Date now = new Date(nowMillis);
byte[] apiKeySecretBytes = DatatypeConverter.parseBase64Binary(SECRET_KEY);
Key signingKey = new SecretKeySpec(apiKeySecretBytes,
signatureAlgorithm.getJcaName());
JwtBuilder builder = Jwts.builder().claim("uuid",
id).setIssuedAt(now).setExpiration(new Date(600000))
.signWith(signatureAlgorithm, signingKey);
Когда я пытаюсь создать с помощью алгоритма HS, он генерирует токен, но когда я пытаюсь проверить его в JWT.IO, он всегда говорит о недопустимой подписи.
Как мне справиться с этим и как создать подписанный JWT?