Предоставление подписи 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);