Предоставление JApplet доступа для чтения и записи к локальной файловой системе

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

Я прочитал часть управляющих апплетов в учебниках по Java и успешно создал файл политики, предоставив разрешения и указав базу кода http://docs.oracle.com/javase/tutorial/security/tour1./index.html

Чтобы пример апплета успешно записывал в локальную систему, мне пришлось добавить эту строку в файл java.security. policy.url.3 = файл:/home/susanj/test/examplepolicy

Вопрос в том, как добиться того же результата с помощью кода?

Я предполагаю, что вы начинаете с класса Policy http://docs.oracle.com/javase/6/docs/api/java/security/Policy.html#getInstance%28java.lang.String,%20java.security.Policy.Parameters%29

создайте новую политику с помощью одного из методов getInstance

Policy.getInstance(тип String, параметры Policy.Parameters)

Политика. getInstance (тип String, параметры Policy.Parameters, провайдер)

Политика. getInstance(тип String, параметры Policy.Parameters, провайдер String)

и добавьте его с помощью метода Policy.setPolicy(Policy p), а затем используйте Policy.refresh();

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

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

Я предполагаю, что это действительно правильный путь.

С уважением

Бретт


person BMac    schedule 16.08.2012    source источник


Ответы (1)


Было бы очень плохой идеей, если бы вы могли изменить политику из песочницы... похоже, что вы пытаетесь это сделать.

Прочитайте Настройка файла политики для предоставления необходимого разрешения.

В основном вам нужно обновить файл политики в экземпляре Java по умолчанию, прежде чем вы сможете запустить апплет.

Или вы можете подписать его.

person MadProgrammer    schedule 16.08.2012
comment
Этот апплет не загружается из Интернета, он является частью настольного приложения. Я могу загрузить файл класса/jar до загрузки апплета. Я предполагаю, что вы сможете установить файл политики до загрузки апплета? - person BMac; 17.08.2012
comment
Не должно быть большой разницы, апплет работает в режиме ограниченной безопасности, так он работает по умолчанию. Вам нужно как-то разрешить ему работать в незащищенном режиме. Лучший способ — обновить файл политики по умолчанию или предоставить приложению другой файл, например -Djava.security.policy=applet.policy - person MadProgrammer; 17.08.2012
comment
Как eclipse IDE позволяет запускать апплеты с полными привилегиями? - person BMac; 17.08.2012
comment
Зависит от того, использует ли он собственное представление апплета или тот, который поставляется с Java? Если он собственный, он может внедрять свой собственный менеджер безопасности или предоставлять свой собственный файл политики безопасности. Netbeans использует прилагаемую программу просмотра апплетов, но позволяет переключать апплет в незащищенный режим из контейнера. - person MadProgrammer; 17.08.2012
comment
java -Djava.security.manager -Djava.security.policy=file:/C:/app/applet/policy Я пытаюсь выполнить то, что вы рекомендовали, а именно обновить файл политики через командную строку, но, похоже, я не в состоянии заставить его работать. Я использую правильный синтаксис? - person BMac; 17.08.2012
comment
Я не уверен насчет -Djava.security.manager, но нужна ли -Djava.security.policy ссылка на стиль URL, может ли это быть просто C:\app\applet\policy?? И указывает ли он на Policy File напрямую?? т.е. -Djava.security.policy=C:\app\applet\security.policy - person MadProgrammer; 17.08.2012
comment
Спасибо за помощь. В итоге я написал прямо в файл java.policy. Все хорошо - person BMac; 17.08.2012
comment
В итоге я написал прямо в файл java.policy. Пожалуйста, примите ответ, когда вы получаете шанс. Как в сторону. Файлы политик не будут практичными во время развертывания. Код должен быть подписан цифровой подписью. Я предлагаю добавить задачу в файл сборки, чтобы подписывать его каждый раз, когда он создается. - person Andrew Thompson; 18.08.2012