Разъяснения по поводу предупреждений Java-апплета

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

Предпосылки: Мой апплет подписан с использованием самозаверяющего сертификата, который также импортируется как доверенный центр сертификации (отображается предупреждение "безопаснее"). Я буду использовать настоящий сертификат от Thawte или Verisign в производстве, но пока этого должно быть достаточно. Внешние разрешения не требуются, и доступ к диску осуществляется только через JNLP.

Поскольку я хочу иметь возможность использовать FileSaveService и FileOpenService, я указал тег j2ee-application-client-permissions в части безопасности моего файла JNLP.

Javascript используется для вызова открытых функций в апплете.

Это происходит прямо сейчас: когда апплет загружен, я получаю приглашение безопасности, предупреждающее меня, что этот апплет будет работать с неограниченным доступом к системе. Предупреждение является доверенным видом с синим информационным дисплеем, а не желтым предупреждением. Почему я получаю это предупреждение? Будет ли это появляться всегда, даже если я буду использовать только библиотеки JNLP? Как определяется это предупреждение, сканируя мой код или читая некоторые настройки, которые я могу изменить? Есть ли список разрешенных классов для запуска без получения этого предупреждения?

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

Я предполагаю, что последующее предупреждение является предупреждением JNLP, поскольку оно впервые появилось, когда я начал использовать JNLP. Почему меня спрашивают как при запуске, так и во время использования? Нужно ли получать оба, и получу ли я оба, как только у меня будет соответствующий сертификат?

Самое главное, что я хотел бы избавиться от первого предупреждения, так как выглядит довольно страшно, чтобы позволить моему апплету работать с неограниченным доступом (тем более, что это вовсе не мое намерение!). Есть ли документация, которая проясняет, что вызывает предупреждения и как с ними бороться?

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

<script>
var attributes = {
    id:'id',
    codebase:'www.mydomain.com/jars/',
    width:1, 
    height:1, 
    name:"Name"
};
var parameters = {
    jnlp_href:"www.mydomain.com/jars/jnlp.jnlp"
}                       
    deployJava.runApplet(attributes, parameters, '1.6');
</script>

Файл JNLP

<?xml version="1.0" encoding="UTF-8"?>
    <jnlp spec="1.0+" href="/jars/jnlp.jnlp">
    <information>
    <title>Title</title>
    <vendor>My Company</vendor>
    <description>Description</description>
    <description kind="short">Desc</description>
    <offline-allowed />
    </information>

    <resources>
    <j2se version="1.6+" />
    <jar href="ext1.jar" main="false" download="eager"/>
    <jar href="ext2.jar" main="false" download="eager" />
    <jar href="mainJar.jar" main="true" download="eager"/>
    </resources>
    <applet-desc 
    name="name"
    main-class="com.myCompany.applet.mainClass" 
    width="1"
    height="1">
    </applet-desc>
<security>
    <j2ee-application-client-permissions/>
</security>
 </jnlp>

1 ответ

Вам не нужно подписывать апплет. Если вы не подпишете, то первое предупреждение не появится.

http://docs.oracle.com/javase/tutorial/deployment/applet/security.html

Другие вопросы по тегам