Java Jnlp阻止下载我引用的JAR
我已经开发了一个jnlp文件,当客户端从他/她的浏览器下载它时,它工作正常。到目前为止没有问题,但客户端还可以访问jnlp引用的jar文件,并最终下载它们 我不希望其他人通过从浏览器写入路径来下载我的JAR。我只是想让jnlp可以直接从浏览器访问Java Jnlp阻止下载我引用的JAR,java,jar,reference,jnlp,Java,Jar,Reference,Jnlp,我已经开发了一个jnlp文件,当客户端从他/她的浏览器下载它时,它工作正常。到目前为止没有问题,但客户端还可以访问jnlp引用的jar文件,并最终下载它们 我不希望其他人通过从浏览器写入路径来下载我的JAR。我只是想让jnlp可以直接从浏览器访问 我怎样才能解决这个问题 它没有“修复”。如果启动应用程序的JWS客户端可以访问JAR,那么也可以通过直接获取来访问JAR。如果通过JSP或servlet动态生成jnlp会怎么样(请参见此处的示例) 在这种情况下,您可以编写一个过滤器来实现检索文件的策略
我怎样才能解决这个问题 它没有“修复”。如果启动应用程序的JWS客户端可以访问JAR,那么也可以通过直接获取来访问JAR。如果通过JSP或servlet动态生成jnlp会怎么样(请参见此处的示例) 在这种情况下,您可以编写一个过滤器来实现检索文件的策略(基于cookie?)。如果未设置cookie,则可以禁用JAR的下载
请参阅以下内容,您可以使用提供的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>
JnlpDownloadServlet
com.sun.javaws.servlet.JnlpDownloadServlet
JnlpDownloadServlet
/应用程序/*
然后对/app中的文件的所有请求都将通过这个servlet。这将阻止用户通过简单的浏览来查看可用文件,但是如果他们知道文件名,他们仍然可以创建一个get请求来通过servlet获取它
如果这是一个问题,那么您还可以使用web.xml中的安全约束设置对该servlet的访问设置安全性(与任何其他servlet一样)。如果您添加了这一点,那么javaws启动器将要求用户在下载文件之前提供有效的凭据。我使用BASIC作为auth方法,因为我不确定javaws客户机是否会尊重其他客户机。这似乎是有益的。在寻找方法时,一位朋友告诉我一种方法。这里是:如果我创建一个虚拟的webProject,将所有的东西(jnlp和JAR)放在这个项目中,并使用web.xml来防止我的JAR被直接访问下载,该怎么办。真的有可能吗?如果有,怎么可能?你能举一个例子吗?看看这个-它有某种关联:一个更简单的解决方案是检查“用户代理”,如果不是JNLP,就禁止下载。有关过滤器的工作方式,请参见: