![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| sergejzr |
|
||||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: нет Всего: 360 |
Ок, проблема вкратце:
У меня апплет, он должен уметь: Читать/писать файлы в определённые директории Читать property Вот в принципе и всё. Дополнительно грузятся куча необходимых lib'ов У меня есть чем подписывать - это наш официальный университетский сертификат. Хочется сделать всё так, чтобы у юзера не было необходимости менять java.policy или же на крайняк чтобы изменения были минимальны. Сейчас апплет работает, если из java.policy сделать:
Напомню, стандартный java.policy выглядит так:
Но это конечно юзеру не продать. Ну, чтение небходимой property я успешно добавил строкой permission java.util.PropertyPermission "user.dir", "read"; А вот с файлами как-то не очень получается. Хотел бы конечно дать права только на определённый домен, но почему-то не получается. Может кто-то знает, как дать права хотя бы на localhost? |
||||
|
|||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 9 Всего: 538 |
О каком домене идет речь? Домен Windows? Вообще FilePermission дает права на чтение только из локальной ФС, ну или то что подмотированно как локальные диски. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| Alexandr87 |
|
|||
![]() дыкий псых ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1459 Регистрация: 27.11.2004 Где: Алматы, Казахстан Репутация: 5 Всего: 39 |
sergejzr, функции апплета через Java-script используете?
Если policy файл не менять, то по-идеи, при загрузке, апплет должен спросить пользователя, доверяет ли он сертификату, с помощью которого был подписан апплет (Если сертификат уже не находится в списке доверенных). После того, как пользователь утвердительно ответит, апплет сможет работать , как простое Java-приложения со всем соответсвующими правами доступа к файловой системе и т.д. У вас работает? Если вы не используете выхов функций апплета из Java-script, дальнешая информация, скорее всего, не поможет решить вам вашу проблему. Если же функции вашего апплета вызываются из Java-script (с помощью технлогии Live-Connect), то даже если пользователь ответит, что доверяет вашему сертификату, менеджер безопасности будет считать такие функции "не доверенными". И никакие гранты в policy файле (кроме AllPermisions) не разубедят его в обратном. (По крайней-мере, у меня не получлось). Как вы сами понимаете, заставлять пользователя вносить в его policy файл подобные изменения (добавление AllPermisions) не разумно. На всякий случай поясню, это означает, что любой апплет будет запускаться с полными правами, даже не уведомив об этом пользователя. Но, решение есть! Оно заключается в том, что небезопасные функции нужно запускать в отедльном потоке, а не в том, потоке, в котором испольняется функция, которая была вызывана из Java-script. небольшой кусок кода, демонстрирующий, что я хотел сказать. Нашел свой старый апплет, вроде он работал ).
Надеюсь, я правильно угадал причину такого поведения менеджера безопасности и информация оказалась полезной. Это сообщение отредактировал(а) Alexandr87 - 29.11.2007, 09:23 |
|||
|
||||
| sergejzr |
|
|||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: нет Всего: 360 |
Alexandr87, огромное спасибо! На самом деле я уже не знал что делать! Действительно, половина функций работала, половина нет. Возможно я бы никогда не догадался, что дело в том, что определённые функции вызываются скриптом! Теперь я знаю в чём проблема и попробую обойтись без вызова "критичных" методов т.е. попробую переложить их логику в init (Там то всё выполняется). Ну конечно спасибо за пример! Возможно не получится всё передать апплету и буду использовать Ваш пример!
|
|||
|
||||
| Stampede |
|
|||
![]() Гносеолог ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 963 Регистрация: 25.4.2005 Где: Calgary, Alberta, Canada Репутация: 1 Всего: 144 |
sergejzr, для того чтобы вызывать методы апплета из JavaScript'а так, чтобы они не блокировались менеджером безопасности, есть еще один трюк - возможно, более удобный, чем выполнение нужной функции в отдельном потоке, поскольку позволяет возвращать результат синхронным образом. Суть фишки - в методе doPrivileged():
Работает как часы -------------------- "If you want something done right, do it yourself" По секрету: выучить английский - реально! |
|||
|
||||
| sergejzr |
|
|||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: нет Всего: 360 |
По удобству оба способа примерно одинаковы, но второй возможно более правильный, спасибо!
|
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Апплеты | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |