Java System.setSecurityManager () плохо работает с файлом политики - PullRequest
0 голосов
/ 12 декабря 2018

Я ожидал, что при использовании System.setSecurityManager () + файл политики он должен работать.

Здесь у меня есть проект intelliJ со структурой файла / каталога, подобной этой:

--src
    --main
       --java
           --TestPrinciple.java
       --resources
           --demo.policy

А потом мой код:

public class TestPrincipal {
    public static void main(String[] args) {
        System.setProperty("java.security.policy", "demo.policy");
        System.setProperty("java.security.auth.login.config", "demo.config");
        System.out.println(System.getProperty("java.home"));
        System.setSecurityManager(new SecurityManager());
    }
}

Пока demo.policy:

grant  {
    permission java.util.PropertyPermission "java.home", "read";
};

Работает с исключением:

Exception in thread "main" java.security.AccessControlException: access denied ("java.util.PropertyPermission" "java.security.policy" "write")
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:472)
at java.security.AccessController.checkPermission(AccessController.java:884)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:549)
at java.lang.System.setProperty(System.java:792)
at TestPrincipal.main(TestPrincipal.java:6)

1 Ответ

0 голосов
/ 12 декабря 2018

Предположительно demo.policy не позволяет разрешениям классов устанавливать системные свойства.

Стоит также отметить, что код устанавливает конфигурацию для менеджера безопасности после инициализации менеджера безопасности.

Простое решение - установить диспетчер безопасности последним.

...