我们开发了非常重要的应用程序,我们需要JNLP。我的JAR使用受信任的CA证书进行签名(使用jarsigner
运行时已验证状态)。我在Permissions: all-permissions
中有MANIFEST.MF
。我的JNLP看起来像这样:
<jnlp codebase="http://TEST:18080" spec="1.0+" href="/TEST-boot/Test.jnlp">
<information>
<vendor>TEST</vendor>
<homepage href="http://wf-nb:18080/" />
<description>Testing Testing</description>
</information>
<update check="timeout" policy="always"/>
<security>
<all-permissions/>
</security>
<resources>
<j2se version="1.7+" />
<jar href="/TEST/jar/TEST-boot-signed.jar" />
</resources>
<application-desc main-class="test.package" />
</jnlp>
我仍然拒绝访问。 JNLP应用程序应该可以完全访问磁盘和所有内容,对吧?如果我想读取系统属性:
21.10.2015 12:14:34.400 [WARN] access denied ("java.util.PropertyPermission" "user.home" "read")
java.security.AccessControlException: access denied ("java.util.PropertyPermission" "user.home" "read")
致电时:
public String getSystemProperty(final String key, final String def) {
return (String)AccessController.doPrivileged(new PrivilegedAction() {
public Object run() {
return System.getProperty(key, def);
}
});
}
此代码取自applet,它运行良好。我应该删除doPrivileged的东西,还是从java web start运行时仍然需要它?
第二个问题:当我想在我的应用程序中使用HttpUrlConnection
时,我会收到连接提示(即使它是加载了JNLP应用程序的同一台服务器)。 Java总是会显示此提示吗?