Jnlp-предотвратить загрузку банок, на которые я ссылался - PullRequest
2 голосов
/ 30 ноября 2011

Я разработал файл jnlp, и он работает правильно, когда клиент загружает его из своего браузера. Нет проблем, но клиент также может получить доступ к файлам jar, на которые ссылается мой jnlp, и в конечном итоге загрузить их

Я не хочу, чтобы мои файлы загружались другими пользователями путем записи пути из браузера. Я просто хочу сделать jnlp напрямую доступным из браузера.

Как я могу исправить эту ситуацию?

Ответы [ 3 ]

3 голосов
/ 30 ноября 2011

Для этого нет «исправления». Если файлы Jars доступны для клиента JWS, который запускает приложение, они также доступны путем прямой выборки.

2 голосов
/ 30 ноября 2011

Вы можете использовать предоставленный JnlpDownloadServlet как способ заблокировать доступ. JnlpDownloadServlet (ищите его в примерах, поставляемых с JDK) будет обрабатывать запросы к файлам Jar и анализировать их. Если вы настроили свой файл web.xml как

<servlet>
    <servlet-name>JnlpDownloadServlet</servlet-name>
    <servlet-class>com.sun.javaws.servlet.JnlpDownloadServlet</servlet-class>
 </servlet>
 <servlet-mapping>
    <servlet-name>JnlpDownloadServlet</servlet-name>
    <url-pattern>/app/*</url-pattern>
 </servlet-mapping>

тогда все запросы на файлы в / app будут проходить через этот сервлет. Это помешает пользователям выполнять простой просмотр доступных файлов, но если они знают имя файла, они все равно могут создать запрос на получение, чтобы получить его через сервлет.

Если это проблема, вы также можете установить безопасность доступа к этому сервлету (как и любому другому сервлету), используя параметры security-limit в файле web.xml. Если вы добавите это, то программа запуска javaws потребует от пользователя предоставить действительные учетные данные, прежде чем он загрузит файлы. Я использовал BASIC в качестве auth-метода , потому что я не был уверен, будет ли клиент javaws соблюдать другие.

0 голосов
/ 30 ноября 2011

Что, если вы генерируете jnlp динамически через JSP или сервлет (см. Здесь пример )?

В этом случае вы можете написать фильтр, который может реализовывать политику (основанную на cookie?) Для получения файлов. Если cookie не установлен, вы можете отключить загрузку банок.

См. Следующую статью: http://lopica.sourceforge.net/faq.html#cookies

...