JNLP获得许可

我最近在通过JNLP启动我的应用程序时偶然发现了一个问题。 我现在把它缩小到java.security.AccessControlException ,它拒绝我关闭我的ExecuterService

所以,我做了一些阅读,发现我需要权限( modifyThread )才能成功关闭服务。 我还发现我应该使用 -tag(在JNLP文件中)来请求它,但我对如何使用感到困惑。

标签的文档说:

[…]如果指定all-permissions元素,则应用程序将具有对客户端计算机和本地网络的完全访问权限 。 如果应用程序请求完全访问权限,则必须对所有JAR文件进行签名将提示用户 […]

从阅读本文来看,在我看来,我可以选择获得全部权限……这似乎是一个令人困惑的实现。 因为我只需要一个关闭我的服务。

我也阅读了这篇文章 ,告诉我不应该请求所有权限,因为我会打开用户计算机以获取恶意代码。

那么,有没有办法指定我只需要特定的权限( modifyThread ),因此我不需要签署我的jar? 或者我是否必须使用“签署我的jar子并请求一切” – 接近?

..我必须选择“签署我的jar子并要求一切” – 接近吗?

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

1)JWS安全级别

  • 沙箱。 提供非常有限的环境。 只允许使用JNLP API服务访问打印机和本地文件系统之类的东西,这些服务在提示用户后提供更多有限forms的File 。 来自窗口横幅。 只能与自己的服务器通信。
  • j2ee-application-client-permissions – 提供那些自动提供的JNLP API服务(在用户接受数字签名代码之后)删除窗口横幅。
  • all-permissions – 几乎任何东西,包括替换现有的安全管理器(是的,甚至’所有权限’代码在JWS中获得安全管理器 – 它只是非常宽松)。

还要追踪JNLP和JWS页面中的链接。 我个人可以推荐这些摘要和链接。