java.security.AccessControlException:拒绝访问(“java.security.SecurityPermission”authProvider.sunmsapi)

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更新,一切都停止了。我正在使用applet处理数字证书。这是我的堆栈跟踪。我看了一些甲骨文的文章,但没有成功



.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)