运行PrivilegedAction的已签名小程序仍然因AccessControlException而失败

时间:2011-05-03 10:22:17

标签: java security permissions applet skype4java

即使对于签名的applet,允许的特权操作是否存在某种限制?这是堆栈跟踪:

Exception in thread "AWT-EventQueue-2" java.security.AccessControlException: access denied (java.lang.RuntimePermission loadLibrary.skype) at java.security.AccessControlContext.checkPermission(AccessControlContext.java:323) at java.security.AccessController.checkPermission(AccessController.java:546) at java.lang.SecurityManager.checkPermission(SecurityManager.java:532) at java.lang.SecurityManager.checkLink(SecurityManager.java:818) at java.lang.Runtime.loadLibrary0(Runtime.java:817) at java.lang.System.loadLibrary(System.java:1045) at com.skype.connector.ConnectorUtils.loadLibrary(ConnectorUtils.java:321) at com.skype.connector.osx.SkypeFramework.init(SkypeFramework.java:44) at com.skype.connector.osx.OSXConnector.initializeImpl(OSXConnector.java:107) at com.skype.connector.Connector.initialize(Connector.java:485) at com.skype.connector.osx.OSXConnector.isRunning(OSXConnector.java:86) at com.skype.Skype.isRunning(Skype.java:172)

2 个答案:

答案 0 :(得分:1)

发现问题。特权操作在我的applet中,我的applet的jar已签名,但需要特权的代码在另一个未签名的jar中。签署其他jar修复了问题。另一件事是,即使我从特权行动包装中取出呼叫,只要罐子签名,它仍然可以工作。

答案 1 :(得分:-1)

  

即使对于签名的applet,允许的特权操作是否存在某种限制?

我希望如此,因为一个受信任的applet(不涉及任何JS)无法调用某些方法(例如System.exit(int))。虽然受信任的applet或JWS应用程序具有更多许可安全管理器,但他们仍拥有安全管理器。

您可以尝试在代码到达该点之前调用System.setSecurityManager(null)来测试该理论。如果结果现在可以使用,请不要将其用作生产代码,而是安装允许当前权限以及特定权限的自定义SecurityManager