Я бы хотел указать определенные апплеты для запуска с java.security.AllPermission
на моем компьютере (для отладки и тестирования безопасности). Однако я не хочу включать все апплеты, которые я запускаю, чтобы получить это разрешение. Таким образом, редактируя мой пользовательский файл политики Java (который, как я убедился, является правильным файлом политики при тестировании), я пытаюсь указать это значение:
grant codeBase "http://host_where_applet_lives/-" {
permission java.security.AllPermission;
};
Это значение не срабатывает, когда апплет пытается сделать что-то мощное (в моем случае создайте новый поток). Однако, когда я поставил следующее значение:
grant {
permission java.security.AllPermission;
};
Апплет способен выполнять мощную операцию. Единственное отличие - отсутствие атрибута codeBase
.
Ответ на аналогичный вопрос, заданный здесь [1], предположил (но никогда не показывает или не доказывает), что AccessController.doPrivileged()
звонки могут потребоваться. Для меня это звучит неправильно, так как мне не нужен этот вызов, когда я даю разрешения всем апплетам (второй пример, который я показал). Даже если это решение, засорять апплеты, которые я запускаю с помощью вызовов AccessController.doPrivileged()
, не легко или не обязательно возможно. В завершение мои тесты показывают, что это все равно не работает. Но я рад услышать больше идей об этом.
[1] Не удалось настроить AllPermission для апплета интрасети. Кто-нибудь может помочь?