java.security.AccessControlException:拒绝访问(“java.security.SecurityPermission”authProvider.sunmsapi)
直到早上,我的小程序里一切正常。我接受了Java更新,一切都停止了。我正在使用applet处理数字证书。这是我的堆栈跟踪。我看了一些甲骨文的文章,但没有成功java.security.AccessControlException:拒绝访问(“java.security.SecurityPermission”authProvider.sunmsapi),java,oracle,security,applet,Java,Oracle,Security,Applet,直到早上,我的小程序里一切正常。我接受了Java更新,一切都停止了。我正在使用applet处理数字证书。这是我的堆栈跟踪。我看了一些甲骨文的文章,但没有成功 .java.policy我在applet的public void init()方法中创建的文件。它在访问applet中的任何内容之前 grant { permission java.security.AllPermission; permission java.io.FilePermission "<<ALL FILES
.java.policy
我在applet的public void init()方法中创建的文件。它在访问applet中的任何内容之前
grant
{
permission java.security.AllPermission;
permission java.io.FilePermission "<<ALL FILES>>", "read";
permission java.io.FilePermission "<<ALL FILES>>", "write";
permission java.util.PropertyPermission "*", "read, write";
permission java.util.PropertyPermission "user.home", "read";
permission java.util.PropertyPermission "user.dir", "read";
permission java.lang.RuntimePermission "modifyThread";
permission java.lang.RuntimePermission "*";
};
grant
{
权限java.security.AllPermission;
权限java.io.FilePermission“”“读取”;
权限java.io.FilePermission“”“写入”;
权限java.util.PropertyPermission“*”,“读、写”;
权限java.util.PropertyPermission“user.home”、“read”;
权限java.util.PropertyPermission“user.dir”,“read”;
权限java.lang.RuntimePermission“modifyThread”;
权限java.lang.RuntimePermission“*”;
};
更新:2013年11月18日
即使使用代码签名证书也不起作用
我还不能发表评论,所以我将此作为回答
我相信在你的小程序中创建.java.policy文件已经太晚了——插件在运行任何代码之前都已经启动并读取了策略文件
您可以对小程序进行签名,并使用jnlp文件在安全元素中分配权限
我知道现在回答这个问题已经很晚了,但我还是补充了我的解决方案,因为我很难回答这个问题:
我的问题:在部署依赖于Bouncy Castle库的应用程序(WAR文件)时,我遇到了以下问题:
`
`
以下是我所做的,它对我起了作用:
转到:{Installed JDK path}\jre\lib\security\
打开文件java.policy
添加权限:permission java.security.SecurityPermission“putProviderProperty.BC”代码>
重新启动程序以加载更改
我还不知道这到底是如何工作的,或者像这样更改java.policy
文件是否安全(仍在寻找实现这种配置的其他方法)
对这种变化一定要采取预防措施。更多关于Oracle的问题:
java.security.AccessControlException: access denied ("java.security.SecurityPermission" "authProvider.SunMSCAPI")
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:472)
这是因为我们需要访问文件系统资源的权限,但默认情况下,未签名的小程序会被拒绝此权限。因此,要克服这个问题,必须对小程序进行签名
只需对applet jar文件进行签名
我也遵循了stackoverflow线程,但没有任何效果…我用.pfx
文件签署了证书并进行了验证。但它不工作…@AndrewThompson我用Thawte颁发的代码签名证书对我的小程序进行了签名,但它仍然不工作。检查更新问题。看起来您正在从JavaScript调用小程序。JavaScript不会被签署(从FireFox 2…),所以不会被信任。我签署了applet并在MANIFEST.MF
文件中设置了权限属性,但不起作用。
grant
{
permission java.security.AllPermission;
permission java.io.FilePermission "<<ALL FILES>>", "read";
permission java.io.FilePermission "<<ALL FILES>>", "write";
permission java.util.PropertyPermission "*", "read, write";
permission java.util.PropertyPermission "user.home", "read";
permission java.util.PropertyPermission "user.dir", "read";
permission java.lang.RuntimePermission "modifyThread";
permission java.lang.RuntimePermission "*";
};
cannot create instance of
org.bouncycastle.jcajce.provider.digest.GOST3411$Mappings
java.security.AccessControlException: access denied
("java.security.SecurityPermission"
"putProviderProperty.BC")
java.security.AccessControlException: access denied ("java.security.SecurityPermission" "authProvider.SunMSCAPI")
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:472)