Предоставление подписи RSA для токена JWT с использованием библиотеки nimbusds.jose

Я хочу подписать токен JWT, используя алгоритм RSA Signature SHA-256, который использует пару открытого / закрытого ключей. Я пытаюсь сделать это с помощью библиотеки nimbusds.jose, как показано ниже...

// read in the private key as bytes (using java.nio.file library)
bytes[] privateKeyFileContent = Files.readAllBytes(Paths.get(secretKeyPath));

// get an RSAPrivateKey object from that private key
java.security.KeyFactory keyFactory = KeyFactory.getInstance("RSA");
java.security.spec.KeySpec ks = new java.security.spec.PKCS8EncodedKeySpec(privateKeyFileContent);
java.security.interfaces.RSAPrivateKey privateKey = (RSAPrivateKey) keyFactory.generatePrivate(ks);

// JWT claims
Map<String, Object> jwtClaims = new HashMap<>();
jwtClaims.put("someClaim", "Hello");
jwtClaims.put("anotherClaim", "World");

com.nimbusds.jose.JWSHeader header = new com.nimbusds.jose.JWSHeader(JWSAlgorithm.RS256);
com.nimbusds.jwt.JWTClaimsSet.Builder claimsSetBuilder = new JWTClaimsSet.Builder(new JWTClaimsSet(jwtClaims))

После того, как я установил требования, как мне подписать JWT с помощью RSAPrivateKey?

Единственные примеры, которые я нашел в Интернете, используют идентификатор ключа...

SignedJWT signedJWT = new SignedJWT(
    new JWSHeader.Builder(JWSAlgorithm.RS256).keyID(rsaJWK.getKeyID()).build(),
    claimsSet);

0 ответов

Другие вопросы по тегам