Получить EllipticCurveJsonWebKey от JSON в Jose4J
Я использую jose4j для реализации аутентификации на основе токенов в моем приложении. Хотелось бы узнать, есть ли возможность загрузить JWK из json, хранящегося в БД. Я сделал следующие шаги:
Создан ключ:
EllipticCurveJsonWebKey key = EcJwkGenerator.generateJwk(EllipticCurves.P521);
Создайте JSON из него:
key.toJson()
Сохраните значение json в БД.
Загрузка значения из БД.
В этот момент я застреваю. Я не знаю, как создать ключ с данными, предоставленными в JSON.
Любое решение?
1 ответ
Решение
Хорошо, я нашел рабочее решение по этой ссылке.
Я выкладываю ответ, который работал для меня:
// Generate a new RSA key pair wrapped in a JWK
PublicJsonWebKey rsaJwk = RsaJwkGenerator.generateJwk(2048);
// or an EC key, if you prefer
PublicJsonWebKey ecJwk = EcJwkGenerator.generateJwk(EllipticCurves.P256);
// A JSON string with only the public key info
String publicKeyJwkString = rsaJwk.toJson(JsonWebKey.OutputControlLevel.PUBLIC_ONLY);
System.out.println(publicKeyJwkString);
// A JSON string with both the public and private key info
String keyPairJwkString = rsaJwk.toJson(JsonWebKey.OutputControlLevel.INCLUDE_PRIVATE);
System.out.println(keyPairJwkString);
// parse and convert into PublicJsonWebKey/JsonWebKey objects
PublicJsonWebKey parsedPublicKeyJwk = PublicJsonWebKey.Factory.newPublicJwk(publicKeyJwkString);
PublicJsonWebKey parsedKeyPairJwk = PublicJsonWebKey.Factory.newPublicJwk(keyPairJwkString);
// the private key can be used to sign (JWS) or decrypt (JWE)
PrivateKey privateKey = parsedKeyPairJwk.getPrivateKey();
// the public key can be used to verify (JWS) or encrypt (JWE)
PublicKey publicKey = parsedPublicKeyJwk.getPublicKey();