Как проверить подпись токена в Nimbus JOSE + JWTJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Как проверить подпись токена в Nimbus JOSE + JWT

Сообщение Anonymous »

У меня есть токены, переходящие от сервера к клиенту при каждом запросе ресурса с использованием Nimbus JOSE + JWT

Код для создания токена JWT:

Код: Выделить всё

public class TokenProvider {

String token = "";

public String getToken(String email) {
try {
KeyPairGenerator keyGenerator = KeyPairGenerator.getInstance("RSA");
keyGenerator.initialize(1024);

KeyPair kp = keyGenerator.genKeyPair();
RSAPublicKey publicKey = (RSAPublicKey) kp.getPublic();
RSAPrivateKey privateKey = (RSAPrivateKey) kp.getPrivate();

System.out.println("publicKey: " + publicKey);
System.out.println("privateKey: " + privateKey.toString());

JWSSigner signer = new RSASSASigner(privateKey);

JWTClaimsSet claimsSet = new JWTClaimsSet();
claimsSet.setSubject("RTH");
claimsSet.setCustomClaim("email", email);
claimsSet.setCustomClaim("role", "USER");
claimsSet.setIssuer("https://rth.com");
claimsSet.setExpirationTime(new Date(new Date().getTime() + 60 * 1000));

SignedJWT signedJWT = new SignedJWT(new JWSHeader(JWSAlgorithm.RS256), claimsSet);

signedJWT.sign(signer);
token = signedJWT.serialize();
TokenSaverAndValidatorDAO tokenSaver = new TokenSaverAndValidatorDAO();
tokenSaver.saveTokenToDB(email, token);

signedJWT = SignedJWT.parse(token);

JWSVerifier verifier = new RSASSAVerifier(publicKey);
System.out.println("verifier: " + verifier);
System.out.println("verify method: " + signedJWT.verify(verifier));
assertTrue(signedJWT.verify(verifier));
assertEquals("RTH", signedJWT.getJWTClaimsSet().getSubject());
assertEquals("https://rth.com", signedJWT.getJWTClaimsSet().getIssuer());
assertTrue(new Date().before(signedJWT.getJWTClaimsSet().getExpirationTime()));
} catch (JOSEException | ParseException | NoSuchAlgorithmException ex) {
Logger.getLogger(TokenProvider.class.getName()).log(Level.SEVERE, null, ex);
}
return token;
}
}
Пока все работает нормально, но проблема в том, как проверить подпись токена, полученную обратно от клиента?

Из API есть только один метод, который выглядит так, как будто он предназначен для проверки, но принимает только открытый ключ (

Код: Выделить всё

RSAPublicKey
) как параметр, а не токен.

Кто-нибудь работал над JWT с использованием этой библиотеки, пожалуйста, помогите. Спасибо

Подробнее здесь: https://stackoverflow.com/questions/356 ... s-jose-jwt
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»