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.
Документация инструмента
Вот шаги, должен был подписать файл 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. (См.
Чтобы закодировать файл 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.