JSON Web 暗号化を使用するために、 Java nimbus-JOSEのこの素晴らしいライブラリを見つけました。このライブラリはシンプルで、以下に示す JWE 暗号化のように、JWE 暗号化と復号化に数行しか必要ありません。
EncryptedJWT jwt = new EncryptedJWT(header, builder.build());
RSAEncrypter encrypter = new RSAEncrypter((RSAPublicKey) keyProvider.getDefaultPublicKey());
try {
jwt.encrypt(encrypter);
} catch (JOSEException e) {
throw new RuntimeException("Failed to generate encrypted token", e);
return jwt.serialize();
ただし、javadocs とドキュメントを読んだ後でも、このライブラリについていくつか質問がありました。特にJWEとこのライブラリに関しては、
- JWE を復号化した後、JWE の真正性をどのように検証しますか? JWE には「署名」がありません。では、JWE の 5 つの部分はどのように有効性を確認するのに役立ちますか? ライブラリでこれに対するサポートはありますか?
- ヘッダーとクレーム以外の JWT の他のフィールドは、ライブラリによってランダムに生成されますか? (これについて明確な証拠を見つけることができませんでした。)
- alg: "RSA-OAEP", enc: "A128GCM" を使用すると、暗号化するたびに異なる JWE を取得するはずですが、同じ JWE を取得しています。RSA-OEAP-256 はこれを防ぐべきではありませんか? 暗号化と復号化フローの詳細なシーケンスは何ですか?
- Javascript で同様のライブラリを見つけようとしましたが、Java 用の nimbus-jose のようなライブラリを見つけることができませんでした。誰かが推奨事項を持っている場合は、以下で助けてください! 私の質問を手伝ってくれる人に感謝します。すべての入力を歓迎します。:)