0

我正在使用jose4j在我的应用程序中实现基于令牌的身份验证。我想知道,是否有可能从存储在数据库中的 json 加载 JWK。我做了以下步骤:

  1. 创建了一个密钥:EllipticCurveJsonWebKey key = EcJwkGenerator.generateJwk(EllipticCurves.P521);

  2. 从中创建 JSON:key.toJson()

  3. 将 json 值保存到数据库。

  4. 从数据库加载值。

  5. 在这一点上,我被卡住了。我不知道如何使用 json 中提供的数据创建密钥。

有什么解决办法吗?

4

1 回答 1

2

好的,我从这个链接找到了一个可行的解决方案。

我发布了对我有用的答案:

    // 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();
于 2016-03-30T12:44:43.867 回答