2014-01-28 2 views
0

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

Я подписал апплет сам и сделал простой тест с этим результатом:

java.security.AccessControlException: доступ запрещен («java.net.SocketPermission» «www.google.com:80» «connect, solve»)

Я также пытаюсь добавить политику безопасности в файл манифеста без везения.

Я действительно не понимаю, что должно быть правильным producedure,

  • Должен ли я использовать файл политики внутри кувшина? где именно он должен быть расположен?

  • Должен ли я поместить определенное определение политики в тег APPLET на HTML?

  • Должен ли я что-то делать внутри кода, чтобы узнать о привилегиях/разрешении?

  • Должен ли я использовать другой способ запуска, такой как JNLP? это имеет значение?

Благодаря

ответ

0

поведение зависит от версии Java. Начиная с java 7u51, оба jws и апплета должны быть подписаны с действительным сертификатом (а не с самописью). http://www.oracle.com/technetwork/java/javase/7u51-relnotes-2085002.html#newft Есть только две изолированные зоны безопасности и все разрешения. Разрешения атрибута должны быть указаны в манифесте и в файле jnlp. Для выполнения песочницы HTTP-запросов достаточно. Прочитайте эту статью http://docs.oracle.com/javase/tutorial/deployment/applet/security.html

+0

Спасибо. Что для меня работало, это реализовать PrivilegedAction на моих классах и сделать AccessController.doPrivileged(). – molokoV

+0

Разрешение «песочницы», как правило, недостаточно для того, чтобы нарушить политику «Одинаковый исход». Поддерживается ограниченная форма crossdomain.xml, но я не думаю, что это может сделать что-то полезное с политикой google.com. –

0

Отвечаю подобный вопрос здесь: Warning on Permissions attribute when running an applet with JRE 7u45

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

jar ufm jarfile.jar confmanifest.txt

или вы используете Maven. (Simpliest way to add an attribute to a jar Manifest in Maven)

внутри манифеста вы будете редактировать разрешения, его необходимости (сокет, файл и т.д.) и его codBase. (кросс-происхождение и цели безопасности)

Тогда для запуска локально без истинного CA подписанного сертификата вам необходимо отредактировать файл java.policy Jvm с policytool

Ю.Н. LP для подписанных банок/апплетов. Но вы можете использовать это, его единственный дескриптор апплета, и вы можете его использовать везде, как и у вас на рабочем столе.

С HTML5 вы должны использовать тег <object>. Я предпочитаю разворачивать апплет через javascript и вызывать методы апплета с помощью javascript-методов.

См http://docs.oracle.com/javase/tutorial/deployment/applet/invokingAppletMethodsFromJavaScript.html

су @.

+0

хорошо с policytool не решить coz, вы не можете развернуть это как решение. –

Смежные вопросы