Jnlp-防止下载我引用的罐子

时间:2011-11-30 10:27:30

标签: java jar reference jnlp

我已经开发了一个jnlp文件,当客户端从他/她的浏览器下载它时它正常工作。这里没问题,但客户端也可以访问我的jnlp引用的jar文件,并最终下载它们。

我不希望其他人通过从浏览器编写路径来下载我的jar。我只想让jnlp可以直接从浏览器访问。

我该如何解决这种情况?

3 个答案:

答案 0 :(得分:3)

没有'修复'。如果启动应用程序的JWS客户端可以访问Jars,则可以通过直接获取来使用它们。

答案 1 :(得分:2)

您可以使用提供的JnlpDownloadServlet来阻止访问。 JnlpDownloadServlet(在随JDK提供的示例中查找它)将处理对Jar文件的请求并对它们执行diff。如果您设置了像

这样的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中文件的所有请求都将通过此servlet。这将阻止用户进行简单的浏览以查看可用文件,但如果他们知道文件名,他们仍然可以创建get请求以通过servlet获取它。

如果这是一个问题,那么您还可以使用web.xml中的 security-constraint 设置来访问此servlet(就像使用任何其他servlet一样)。如果添加,则javaws启动程序将要求用户在下载文件之前提供有效凭据。我使用BASIC作为 auth-method 因为我不确定javaws客户端是否会尊重任何其他人。

答案 2 :(得分:0)

如果通过JSP或servlet动态生成jnlp怎么办(请参阅此处example)?

在这种情况下,您可以编写一个可以实现策略(基于cookie?)的过滤器来检索文件。如果未设置cookie,您可以禁用jar的下载。

请参阅以下article: http://lopica.sourceforge.net/faq.html#cookies