2016-03-30 2 views
0

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

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

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

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

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

  5. В этом пункте я застреваю. Я не знаю, как создать ключ с данными, представленными в json.

Любое решение?

ответ

1

Хорошо, я нашел рабочее решение от этого link.

я отправляю ответ, который работал для меня:

// 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();