JNLP获取权限

5
我最近在通过JNLP启动我的应用程序时遇到了问题。我现在将其缩小到一个java.security.AccessControlException, 它拒绝关闭我的ExecuterService
因此,我阅读了一些资料,并发现我需要权限(modifyThread)才能成功关闭服务。我还发现我应该使用<security>标签(在JNLP文件中)来请求它,但我有点困惑如何操作。 标签文档说:

[...]如果指定了all-permissions元素,则应用程序将完全访问客户机器和本地网络。如果应用程序请求完全访问,则所有JAR文件必须被签名。用户将会被提示[...]

阅读此文后,我认为我可以选择获取所有或没有权限...这似乎是一种令人困惑的实现。因为我只需要一个关闭我的服务的权限。
我还阅读了此文章,告诉我不应请求所有权限,因为那样会为用户计算机打开恶意代码的大门。
那么,有没有办法指定我只需要特定的权限(modifyThread),因此我不需要签署我的jar文件?还是我必须采用“签署我的jar文件并请求所有权限”的方法?
1个回答

4

我需要使用“签署我的jar包并请求所有权限”的方法吗?

是的。JWS权限分为3个级别1,唯一允许修改线程的级别是all-permissions

1) JWS安全级别

  • 沙盒。提供非常有限的环境。只有使用JNLP API服务才能访问打印机和本地文件系统,并在提示用户后提供更有限的File形式。带有窗口横幅。只能与自己的服务器通信。
  • j2ee-application-client-permissions - 在用户接受数字签名代码后提供这些JNLP API服务而无需提示,去除了窗口横幅。
  • all-permissions - 几乎任何事情都可以做,包括替换现有的安全管理器(是的,在JWS中,即使是“所有权限”代码也会得到安全管理器,只是非常宽松)。

还要查看JNLPJWS页面上的链接。我个人推荐这些摘要和链接。


谢谢想法。有关那些“三个层次”的文档吗? - Lukas Knuth
好的,谢谢。顺便问一下,我真的需要购买一个价值500美元的证书吗?如果使用自签名证书是否有任何缺点(应用程序只会被我认识的人使用,而不是所有人)? - Lukas Knuth
1
使用自签名证书是否有任何缺点?自签名证书的问题在于,正如您可以制作一个声称您就是您本人的证书,我也可以制作一个声称就是您本人的证书。它们“不值得它们书写的位元”。另一方面,“只能由我个人认识的人使用”。只要您能让他们相信并在提示时点击“确定”,它就可以起作用。 - Andrew Thompson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接