Spec-Zone .ru
спецификации, руководства, описания, API
|
Эта глава включает следующие темы:
Разрабатывающие приложения для развертывания с Веб-Запуском Java являются обычно тем же самым как разрабатыванием автономных приложений для Java (ТМ) Платформа Standard Edition. Например, точкой входа для приложения является стандартный public static void main(String[] argv).
Однако, чтобы поддерживать Веб-развертывание — автоматическую загрузку и запуск приложения — и гарантировать, что приложение может работать в безопасной песочнице, есть некоторые дополнительные соображения:
Сеть Java Запускает только файлы JAR передач с веб-сервера на клиентскую машину. Это определяет, где хранить файлы JAR на локальной машине. Таким образом приложение не может использовать дисковые относительные ссылки на ресурсы, такие как изображения и конфигурационные файлы.
Все ресурсы приложения должны быть получены от файлов JAR, определенных в разделе resources файла JNLP, или получали явно использование запроса HTTP к веб-серверу. Хранение ресурсов в файлах JAR рекомендуется, так как они будут кэшироваться на локальной машине Сетью Java, Запускаются.
Следующий пример кода показывает, как получить изображения от файла JAR:
// Get current classloader ClassLoader cl = this.getClass().getClassLoader(); // Create icons Icon saveIcon = new ImageIcon(cl.getResource("images/save.gif")); Icon cutIcon = new ImageIcon(cl.getResource("images/cut.gif")); ...
Пример предполагает, что следующие записи существуют в одном из файлов JAR для приложения:
images/save.gif images/cut.gif
API JNLP может использоваться, чтобы получить доступ к файловой системе клиента и другим ресурсам. См. следующие темы для получения дополнительной информации об использовании API JNLPI, чтобы получить доступ к клиенту:
Веб-Начальные адреса Java вопросы безопасности:
Приложения, запущенные с Веб-Запуском Java, по умолчанию, запускаются в ограниченной среде, где у них есть ограниченный доступ к локальным вычислительным ресурсам, таким как устройства хранения и локальная сеть. В этой среде песочницы Веб-Запуск Java может гарантировать, что загруженное и потенциально недоверяемое приложение не может поставить под угрозу безопасность локальных файлов или сети.
Дополнительное средство защиты, поддерживаемое Веб-Запуском Java, является цифровым подписыванием кода. Если вызываемое приложение будет поставлено в один или более подписанные файлы JAR, то Веб-Запуск Java проверит, что содержание файла JAR не было изменено, так как они были подписаны. Если проверка цифровой подписи перестанет работать, то Веб-Запуск Java не будет запускать приложение, так как это, возможно, поставилось под угрозу сторонним.
Поддержка подписывания кода важна для обоих пользователей и для провайдеров прикладных служб. Эта служба позволяет пользователям проверить, что приложение прибывает из доверяемого источника. Поскольку провайдер прикладных служб подписывает код, оба могут быть обеспечены, та никакая другая сторона не может явиться олицетворением приложения в Сети. Подписанное приложение, которому доверяет пользователь, может также запросить дополнительные системные полномочия, такие как доступ к локальному диску.
Сеть Java Запускает подарки диалоговое окно, выводящее на экран источник приложения, основанный на сертификате подписывающего лица, прежде, чем приложение будет запущено. Это позволяет пользователю делать обоснованное решение о том, предоставить ли дополнительные полномочия загруженному коду.
Включением следующих настроек в файле JNLP приложение может запросить полный доступ к клиентской системе, если все ее файлы JAR подписываются:
<security> <all-permissions/> </security>
Реализация подписывания кода в Веб-Запуске Java основана на API безопасности в базовом Java (ТМ) Платформа Standard Edition. Java 2 SE JRE 1.4.2 поддерживает подписывание кода с SHA1withDSA и алгоритмами MD5withRSA.
Разработчики подписываются, код для использования с Сетью Java Запускаются таким же образом что касается Апплетов Java — при использовании стандартного инструмента jarsigner от Java (ТМ) Платформа Standard Edition. Документация инструмента jarsigner обеспечивает примеры того, как подписать код и создать свидетельства об испытании, и это обсуждает другие проблемы, связанные с подписанием.
Вот шаги, должен был подписать файл JAR со свидетельством об испытании:
1. Удостоверьтесь, что у Вас есть SDK 1.4.2 keytool
и jarsigner
в Вашем пути. Эти инструменты располагаются в каталоге bin SDK.
2. Создайте новый ключ в новом keystore
следующим образом:
keytool -genkey -keystore myKeystore -alias myself
Вы будете запрошены информацию о новом ключе, таком как пароль, имя, и т.д. Это создаст myKeystore
файл на диске.
3. Затем создайте самоподписанное свидетельство об испытании следующим образом:
keytool -selfcert -alias myself -keystore myKeystore
Это запросит пароль. Генерирование сертификата может занять несколько минут.
4. Проверьте, чтобы удостовериться, что все хорошо. Чтобы перечислить содержание keystore, используйте эту команду:
keytool -list -keystore myKeystore
Это должно перечислить что-то как:
Keystore type: jks Keystore provider: SUN Your keystore contains 1 entry: myself, Tue Jan 23 19:29:32 PST 2001, keyEntry, Certificate fingerprint (MD5): C2:E9:BF:F9:D3:DF:4C:8F:3C:5F:22:9E:AF:0B:42:9D
5. Наконец, подпишите файл JAR со свидетельством об испытании следующим образом:
jarsigner -keystore myKeystore test.jar myself
Повторите этот шаг со всеми Вашими файлами JAR.
Отметьте, что самоподписанное свидетельство об испытании должно только использоваться для внутреннего тестирования, так как это не гарантирует идентификационных данных пользователя и поэтому не может доверяться. Защищенный сертификат может быть получен из центра сертификации, такого как
Начинание с Сети Java Запускает версию 1.2, файлы JNLP могут быть закодированы в любой кодировке символов, поддерживаемой Java (ТМ) Платформа Standard Edition. (См. Java (ТМ) Платформа Standard Edition документация для списка поддерживаемых кодировок.)
Чтобы закодировать файл JNLP, определите кодирование в Прологе XML того файла. Например, следующая строка указывает, что файл JNLP будет закодирован в UTF-16.
<?xml version="1.0" encoding="utf-16"?>
Пролог самого XML должен быть UTF-8-encoded.
Начинаясь 1.4.2, Сеть Java Запускает динамически сертификаты импорта почти таким же способом, как браузеры делают. Чтобы сделать эту работу, Сеть Java Запускают теперь наборы ее собственный https обработчик, используя java.protocol.handler.pkgs
системные свойства, чтобы инициализировать значения по умолчанию для SSLSocketFactory
и HostnameVerifier
. Это устанавливает значения по умолчанию с HttpsURLConnection.setDefaultSSLSocketFactory
и HttpsURLConnection.setDefaultHostnameVerifier
.
Если Ваше приложение использует те два метод, удостоверьтесь, что их вызывают после Сети Java Запускаются, https обработчик инициализируется, иначе Ваш пользовательский обработчик будет заменен Сетью Java, Запускают обработчик значения по умолчанию. Можно гарантировать, что Ваше собственное настроило SSLSocketFactory
и HostnameVerifiter
используются, делая любое из следующего:
HttpsURLConnection.setDefaultSSLSocketFactory
или HttpsURLConnection.setDefaultHostnameVerifier
только после того, как первый https объект url создается, который выполнится, Сеть Java Запускают https код инициализации обработчика сначала.Для получения информации о создании сервлета загрузки см. следующую главу, Руководство JnlpDownloadServlet.