Как настроить файл security.policy для конкретного приложения из NetBeans? - PullRequest
9 голосов
/ 19 мая 2011

У меня небольшая проблема - на самом деле очень много - я пытаюсь выяснить, как заставить NetBeans прочитать файл моей политики для конкретного приложения.Пожалуйста, посмотрите на приведенный ниже код:

      public static void main(final String[] args)
      {
          System.setSecurityManager(new SecurityManager());
          System.setProperty("java.security.policy","file:/C:/Users/kBPersonal/Documents/NetBeansProjects/JAASTest/JAASTest.policy");

          EventQueue.invokeLater(new Runnable()
          {
              public void run()
              {
                  JFrame frame = new JAASFrame();
                  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                  frame.setVisible(true);
              }
          });
      }

Независимо от того, что я делаю, я получаю следующую ошибку, которая позволяет мне знать, что NetBeans не читает мой файл security.policy (я даже добавил его местоположение восновной файл security.policy в C:\Program Files (x86)\Java\jre6\lib\security\java.security).Кстати, в строке 20 я пытаюсь установить System.setProperty("java.security.policy, ...)

     Exception in thread "main" java.security.AccessControlException: access denied (java.util.PropertyPermission java.security.policy write)
     at java.security.AccessControlContext.checkPermission(AccessControlContext.java:323)
     at java.security.AccessController.checkPermission(AccessController.java:546)
     at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)
     at java.lang.System.setProperty(System.java:725)
     at JAASTest.main(JAASTest.java:20)

Любая помощь будет принята с благодарностью!

Ответы [ 4 ]

17 голосов
/ 21 марта 2012

Если вы используете метод System.setProperty() для добавления файла политики, убедитесь, что это перед созданием SecurityManager.Ранее я использовал SecurityManager с методом System.setProperty(), и вызов его перед созданием SecurityManager обычно работает.

17 голосов
/ 19 мая 2011

Самый простой способ установить определенную политику безопасности - через аргумент времени выполнения. Например, вот что мы делаем здесь для той же проблемы:

  1. Открыть «Свойства проекта -> Выполнить»
  2. Выберите конфигурацию времени выполнения
  3. Отредактируйте «Опции VM» для конфигурации времени выполнения
  4. Добавить следующее:

    -Djava.security.manager -Djava.security.policy=src/dir1/dir2/important.policy

где вы src/dir1/dir2/important.policy будут изменены в вашем примере, чтобы указывать на ваш файл JAASTest.policy.

4 голосов
/ 30 июня 2015

Добавьте политику безопасности перед настройкой менеджера безопасности системы.

в соответствии с заданным кодом сначала добавьте

System.setProperty("java.security.policy","file:/C:/Users/kBPersonal/Documents/NetBeansProjects/JAASTest/JAASTest.policy");

затем

System.setSecurityManager(new SecurityManager());
0 голосов
/ 16 ноября 2015

Хотя это не идеально и не является окончательным решением, запуск «rmiregistry &» из того места, где находятся ваши файлы .class, решит эту проблему.

...