Получить EllipticCurveJsonWebKey от JSON в Jose4J

Я использую jose4j для реализации аутентификации на основе токенов в моем приложении. Хотелось бы узнать, есть ли возможность загрузить JWK из json, хранящегося в БД. Я сделал следующие шаги:

  1. Создан ключ: EllipticCurveJsonWebKey key = EcJwkGenerator.generateJwk(EllipticCurves.P521);

  2. Создайте JSON из него: key.toJson()

  3. Сохраните значение json в БД.

  4. Загрузка значения из БД.

  5. В этот момент я застреваю. Я не знаю, как создать ключ с данными, предоставленными в 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();
Другие вопросы по тегам