Как бы я использовал Maven для установки файлов Политики неограниченной прочности JCE? - PullRequest
21 голосов
/ 06 августа 2010

Для некоторого кода, который у меня есть, требуются неограниченные файлы политики прочности JCE. Я хотел бы добавить эту зависимость в файл Maven Pom, чтобы другим разработчикам в моей команде не приходилось индивидуально применять это к своим системам.

Я понимаю, что системы, на которых это в конечном итоге развернуто, должны будут вручную устанавливать файлы JCE. Это только решение для разработки.

Я думал, что мы добавим файлы политики в наш репозиторий, и maven сможет обработать установку, но я удивлен, что не могу найти кого-то еще, кто делает это (и ведет блог об этом.).

Ответы [ 3 ]

15 голосов
/ 29 ноября 2013

Я нашел этот ответ, когда гуглил зависимости Maven для JAR политик, и понял, что это зависит от установки JRE, поэтому исправление этого как части сборки Maven будет работать только для разработчиков и только при наличии прав на / jre / lib / папка безопасности. Для меня следующий хак кода работает намного лучше (вызовите это как одну из самых первых вещей, которые делает ваше приложение):

    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);
    }
11 голосов
/ 06 января 2017

Взлом безопасности 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);
6 голосов
/ 07 августа 2010

Вы можете попробовать это:

  • Пакет (zip?) Файлов политики неограниченной силы JCE.
  • Установите их в свой корпоративный репозиторий как zip зависимость.
  • Используйте цель dependency:unpack, чтобы распаковать созданную зависимость в ${java.home}/jre/lib/security как часть вашей сборки, например, во время initialize (см. Распаковка определенных артефактов ).
...