我正在部署一个Java小程序,使用JNLP。程序的功能正常,但是在运行时出现了安全警告。我已经广泛搜索了关于何时以及为什么会出现这些警告的答案,但没有得到充分的解答,所以我想在这里寻求一些答案。
前提条件: 我的小程序使用自签名证书进行签名,并且也作为受信任的CA导入(显示“更安全”的警告)。在生产中,我将使用来自Thawte或Verisign的真实证书,但现在这应该足够了。 不需要外部权限,只能通过JNLP访问磁盘。
因为我想要使用FileSaveService和FileOpenService,所以我在JNLP文件的安全部分中指定了j2ee-application-client-permissions标签。
Javascript用于调用小程序中的公共函数。
目前情况如下: 当小程序加载时,我会收到一个安全提示,警告我此小程序将以无限制的方式访问系统。警告是可信的,具有蓝色信息显示而不是黄色警告。我为什么会收到这个警告?即使我坚持只使用JNLP库,这个警告是否总是会出现?如何确定这个警告,是通过扫描我的代码还是通过阅读我可以更改的某些设置?是否有允许运行而不出现此警告的类别列表?
一旦小程序加载完成,我尝试打开文件对话框时会再次收到提示,称应用程序已请求读/写权限。
我认为后面的警告是JNLP警告,因为它在我开始使用JNLP时首次出现。为什么我在启动和使用过程中都会收到提示?我需要两者吗?一旦我拥有适当的证书,我是否会得到两者?
最重要的是,我想摆脱第一个警告,因为它看起来相当可怕,允许我的小程序以无限制的方式运行(特别是因为这根本不是我的意图!)。是否有任何文档可以澄清触发警告的原因以及如何处理它们?
编辑: 该文件经过Janela验证,没有错误。一切都按照预期启动,我只是想了解警告的情况。
JNLP文件
前提条件: 我的小程序使用自签名证书进行签名,并且也作为受信任的CA导入(显示“更安全”的警告)。在生产中,我将使用来自Thawte或Verisign的真实证书,但现在这应该足够了。 不需要外部权限,只能通过JNLP访问磁盘。
因为我想要使用FileSaveService和FileOpenService,所以我在JNLP文件的安全部分中指定了j2ee-application-client-permissions标签。
Javascript用于调用小程序中的公共函数。
目前情况如下: 当小程序加载时,我会收到一个安全提示,警告我此小程序将以无限制的方式访问系统。警告是可信的,具有蓝色信息显示而不是黄色警告。我为什么会收到这个警告?即使我坚持只使用JNLP库,这个警告是否总是会出现?如何确定这个警告,是通过扫描我的代码还是通过阅读我可以更改的某些设置?是否有允许运行而不出现此警告的类别列表?
一旦小程序加载完成,我尝试打开文件对话框时会再次收到提示,称应用程序已请求读/写权限。
我认为后面的警告是JNLP警告,因为它在我开始使用JNLP时首次出现。为什么我在启动和使用过程中都会收到提示?我需要两者吗?一旦我拥有适当的证书,我是否会得到两者?
最重要的是,我想摆脱第一个警告,因为它看起来相当可怕,允许我的小程序以无限制的方式运行(特别是因为这根本不是我的意图!)。是否有任何文档可以澄清触发警告的原因以及如何处理它们?
编辑: 该文件经过Janela验证,没有错误。一切都按照预期启动,我只是想了解警告的情况。
<script>
var attributes = {
id:'id',
codebase:'www.mydomain.com/jars/',
width:1,
height:1,
name:"Name"
};
var parameters = {
jnlp_href:"www.mydomain.com/jars/jnlp.jnlp"
}
deployJava.runApplet(attributes, parameters, '1.6');
</script>
JNLP文件
<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" href="/jars/jnlp.jnlp">
<information>
<title>Title</title>
<vendor>My Company</vendor>
<description>Description</description>
<description kind="short">Desc</description>
<offline-allowed />
</information>
<resources>
<j2se version="1.6+" />
<jar href="ext1.jar" main="false" download="eager"/>
<jar href="ext2.jar" main="false" download="eager" />
<jar href="mainJar.jar" main="true" download="eager"/>
</resources>
<applet-desc
name="name"
main-class="com.myCompany.applet.mainClass"
width="1"
height="1">
</applet-desc>
<security>
<j2ee-application-client-permissions/>
</security>
</jnlp>
attributes
的archive
和code
名称/值对在哪里?如果您将一个普通的未签名小程序(例如兼容性小程序)放入 HTML 中(而不是包含任何已签名的 Jars),会发生什么?据我所记,如果 HTML 中引用了任何已签名的 Jars,则它们将由 JRE 提示进行安全检查。 - Andrew Thompsonj2ee-application-client-permissions
。它(不幸地)在初始安全警告时给出了相同的“无限制访问”消息,我希望它会更温和/有限 - 也许是“有限访问”。点击“运行”(但不要点击“始终信任此发布者的内容”)后,应用程序出现在屏幕上,既不会出现“打开”按钮也不会出现“保存文件”按钮引起进一步提示。正在使用1.6.0_29进行测试。 - Andrew Thompsonj2ee-application-client-permissions
表示“请求以符合J2EE应用程序客户端环境安全规范的权限集运行RIA”。 - Andrew Thompson