最近,我在通过 JNLP 启动应用程序时偶然发现了一个问题。我现在将范围缩小到java.security.AccessControlException
,这拒绝我关闭我的ExecuterService
.
所以,我做了一些阅读,发现我需要许可(modifyThread
) 成功关闭服务。我还发现我应该使用<security>
-tag(在 JNLP 文件中)来请求它,但我对如何请求它有点困惑。
The 标签的文档 http://docs.oracle.com/javase/1.5.0/docs/guide/javaws/developersguide/syntax.html#security says:
[...]如果all-permissions
元素被指定,应用程序
将拥有对客户端计算机和本地网络的完全访问权限。如果
应用程序请求完全访问,然后全部JAR 文件必须是
签. The 将提示用户 [...]
从读到这篇文章,我觉得我可以选择要么得到all or no权限...这似乎是一个令人困惑的实现。因为我只需要关闭我的服务。
我也读过本文 http://java.sun.com/developer/onlineTraining/Programming/JDCBook/appA.html,告诉我不应请求所有权限,因为这样我会打开用户计算机以获取恶意代码。
那么,有没有办法指定我只需要特定的权限(modifyThread
)因此我不需要签署我的罐子?或者我是否必须采用“签署我的罐子并请求一切”的方法?
..我必须采用“签署我的罐子并请求一切”的方法吗?
Yes. JWS permissions come in 3 levels1, the only one where modifying threads is permitted, is all-permissions
.
1) JWS安全级别
- 沙箱化。提供了非常有限的环境。仅允许使用 JNLP API 服务访问打印机和本地文件系统等内容,该服务提供更有限的形式
File
提示用户后。配有窗户横幅。只能与自己的服务器通信。
-
j2ee-application-client-permissions
- 自动提供这些 JNLP API 服务(在用户接受数字签名代码后),删除窗口横幅。
-
all-permissions
- 几乎任何事情,包括替换现有的安全管理器(是的,甚至“所有权限”代码在 JWS 中都有一个安全管理器 - 它非常宽松)。
还可以追踪来自JNLP https://stackoverflow.com/tags/jnlp/info & JWS https://stackoverflow.com/tags/java-web-start/info页。我个人可以推荐这些摘要和链接。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)