JNLP获得许可
我最近在通过JNLP启动我的应用程序时偶然发现了一个问题。 我现在把它缩小到java.security.AccessControlException
,它拒绝我关闭我的ExecuterService
。
所以,我做了一些阅读,发现我需要权限( modifyThread
)才能成功关闭服务。 我还发现我应该使用 -tag(在JNLP文件中)来请求它,但我对如何使用感到困惑。
标签的文档说:
[…]如果指定了
all-permissions
元素,则应用程序将具有对客户端计算机和本地网络的完全访问权限 。 如果应用程序请求完全访问权限,则必须对所有JAR文件进行签名 。 将提示用户 […]
从阅读本文来看,在我看来,我可以选择获得全部或无权限……这似乎是一个令人困惑的实现。 因为我只需要一个关闭我的服务。
我也阅读了这篇文章 ,告诉我不应该请求所有权限,因为我会打开用户计算机以获取恶意代码。
那么,有没有办法指定我只需要特定的权限( modifyThread
),因此我不需要签署我的jar? 或者我是否必须使用“签署我的jar子并请求一切” – 接近?
..我必须选择“签署我的jar子并要求一切” – 接近吗?
是。 JWS权限分为3个级别1 ,唯一允许修改线程all-permissions
是all-permissions
。
1)JWS安全级别
- 沙箱。 提供非常有限的环境。 只允许使用JNLP API服务访问打印机和本地文件系统之类的东西,这些服务在提示用户后提供更多有限forms的
File
。 来自窗口横幅。 只能与自己的服务器通信。 -
j2ee-application-client-permissions
– 提供那些自动提供的JNLP API服务(在用户接受数字签名代码之后)删除窗口横幅。 -
all-permissions
– 几乎任何东西,包括替换现有的安全管理器(是的,甚至’所有权限’代码在JWS中获得安全管理器 – 它只是非常宽松)。
还要追踪JNLP和JWS页面中的链接。 我个人可以推荐这些摘要和链接。