22

私が持っているコードには、JCE 無制限の強度ポリシー ファイルが必要なものがあります。この依存関係を Maven Pom ファイルに追加して、チームの他の開発者がそれぞれのシステムに個別に適用する必要がないようにしたいと考えています。

これが最終的に展開されるシステムには、JCE ファイルを手動でインストールする必要があることを認識しています。これは開発ソリューションのみです。

ポリシー ファイルをリポジトリに追加し、maven でインストールを処理できると考えていましたが、これを行っている (そしてそれについてブログを書いている) 人が他にいないことに驚いています。

4

3 に答える 3

15

ポリシーJARのMaven依存関係をグーグルで検索し、それがJREインストール固有のものであることを認識したため、Mavenビルドの一部としてこれを修正すると、開発者に対してのみ機能し、/jre/lib/securityフォルダーへの権限がある場合にのみ、その答えが見つかりました. 私にとっては、次のコード ハックの方がはるかにうまく機能します (アプリケーションが最初に行うことの 1 つとしてこれを呼び出します)。

    try {
        Field field = Class.forName("javax.crypto.JceSecurity").getDeclaredField("isRestricted");
        field.setAccessible(true);
        field.set(null, java.lang.Boolean.FALSE);
    } catch (ClassNotFoundException | NoSuchFieldException | SecurityException | IllegalArgumentException | IllegalAccessException ex) {
        ex.printStackTrace(System.err);
    }
于 2013-11-29T13:30:00.313 に答える
11

Java 8 セキュリティハック

    // hack for JCE Unlimited Strength
    Field field = Class.forName("javax.crypto.JceSecurity").getDeclaredField("isRestricted");
    field.setAccessible(true);

    Field modifiersField = Field.class.getDeclaredField("modifiers");
    modifiersField.setAccessible(true);
    modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL);

    field.set(null, false);
于 2017-01-06T00:50:03.517 に答える
6

あなたは多分これを試すことができます:

  • JCE 無制限強度ポリシー ファイルをバンドル ( zip?) します。
  • zipそれらを依存関係として会社のリポジトリにインストールします。
  • dependency:unpackゴールを使用して、${java.home}/jre/lib/securityビルドの一部として作成された依存関係をアンパックします (特定のアーティファクトinitializeのアンパックを参照)。
于 2010-08-07T14:24:18.110 に答える