Где разместить файл политики Java-апплета? - PullRequest
9 голосов
/ 10 апреля 2010

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

Для создания соединений у меня есть серверный код, который просто прослушивает localhost: 8000 и присваивает значения команды клиентам по мере их поступления. После подключения клиенты перемещаются под контролем администратора.

Вопрос в том, что, когда я пытаюсь заставить свой код работать в браузере, происходит сбой со следующей ошибкой:

java.security.AccessControlException: access denied (java.net.SocketPermission 127.0.0.1:8000 connect,resolve)

Несмотря на то, что я создал собственную политику, сначала предоставив только разрешение доступа Socket к базе кода папки моего проекта (file:///home/xxx/projects/-), после того, как она не заработала, я предоставил все разрешения от все кодовая база. Я попытался поместить файл политики в домашний каталог и в тот же каталог, где находится код моего апплета.

Ценю любые советы, спасибо.

Ответы [ 5 ]

11 голосов
/ 10 апреля 2010

по умолчанию, я думаю, что он ищет файл с именем .java.policy в вашем домашнем каталоге

Вы можете проверить файл /lib/security/java.security, чтобы увидеть, где он выглядит. проверьте ключи с именем policy.url.n

2 голосов
/ 27 сентября 2012

Вы можете указать местоположение файла политики безопасности с помощью этой опции командной строки

-Djava.security.policy=policyfilepath

с помощью команды java.

Или вы можете установить это свойство, используя процедуру System.setProperty().

0 голосов
/ 23 декабря 2011

Если вы предоставляете разрешение для конкретного JAR (кодовой базы), это работает только в том случае, если весь стек выполнения от начала потока до вызова метода находится в этой кодовой базе / домене защиты.

Если ваш метод является alibrary, и вы уверены, что вы получаете безопасный доступ к операции, вы можете использовать Priveledged Block, который, по сути, гарантирует, что часть стека, вызывающая ваш блок, не учитывается при расчете доступа.

Привилегированный блок, как описано здесь:

http://docs.oracle.com/javase/6/docs/technotes/guides/security/doprivileged.html

Поздравления Бернд

0 голосов
/ 10 апреля 2010

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

0 голосов
/ 10 апреля 2010

Поместите файл политики туда, где находится JRE.

Например, файл моей политики находится в C: \ Program Files \ Java \ jre1.6.0_01 \ lib \ security

...