- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在小程序中有以下通过 JavaScript 调用的方法
public String getAString()
{
Object rc = AccessController.doPrivileged(
new java.security.PrivilegedAction()
{
public Object run()
{
try
{
return "OK";
}
catch (Throwable t)
{
t.printStackTrace();
return "ERROR: " + t.getMessage() + " " + t.getCause();
}
}
});
// Return value
return rc.toString();
}
小程序使用 keytool 创建的证书进行签名
当我调用 getAString()
时,如果抛出 InitationTargetException
。如果我调用不使用 AccessController 类的其他方法,则不会遇到此问题。
此外,每次我打开浏览器时,即使小程序已签名,我也会被要求允许小程序运行。
我该如何解决这个问题?
编辑
我添加了一个按钮,现在我获得了更多信息:
signer information does not match signer information of other classes in the same package
我正在使用第三方存档。原始形式是未签名的,但我使用相同的证书对其进行了签名(尽管使用了不同的命令)。
编辑2这是我在 jar 上签名的方式
keytool -genkey -keystore vkeystore -keyalg rsa -dname "CN=XXX, OU=XXX, O=XXX, L=Atlanta, ST=GA,C=NL" -alias printer -validity 3600 -keypass XXX-storepass XXX
jarsigner -keystore vkeystore -storepass XXX -keypass XXX -signedjar JSPrintS.jar JSPrint.jar printer
jarsigner -keystore vkeystore -storepass XXX -keypass XXX -signedjar jPDFPrintS.jar jPDFPrint.jar printer
JSPrint.jar 包含小程序
编辑3
小程序定义是(位于 JSPrint.jar 中)
package Eplatforms;
import java.net.URL;
import java.security.AccessController;
import javax.swing.JApplet;
import java.awt.event.*;
import java.awt.*;
import com.XXX.pdfPrint.PDFPrint;
public class JSPrint extends JApplet implements ActionListener
....
jPDFPrint.jar是第三方jar
编辑4
我试图尽量减少问题,但我发现当从 jar 文件(甚至签名的文件)调用 AccessControler.doPrivileged 时,出现以下异常:
Exception in thread "main" java.lang.NoClassDefFoundError: TestPrivileges$1
at TestPrivileges.getAString(TestPrivileges.java:14)
at TestPrivileges.main(TestPrivileges.java:7)
Caused by: java.lang.ClassNotFoundException: TestPrivileges$1
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
这是一个测试类:
请注意,调用其他方法不会引发此异常。
这是我编译和运行它的方法:
javac TestPrivileges.java
java TestPrivileges
jar cvf TestPrivileges.jar TestPrivileges.class
jarsigner -keystore vkeystore -storepass My0Company -keypass My0Company -signedjar TestPrivilegesS.jar TestPrivileges.jar printer
copy TestPrivilegesS.jar x /Y
copy TestPrivileges.jar x /Y
cd x
java -classpath TestPrivilegesS.jar TestPrivileges
java -classpath TestPrivileges.jar TestPrivileges
cd ..
vkeystore 快速介绍:
keytool -genkey -keystore vkeystore -keyalg rsa -dname "CN=MyCompany, OU=MyCompany, O=MyCompany, L=Atlanta, ST=GA,C=NL" -alias printer -validity 3600 -keypass My0Company -storepass My0Company
第一次运行工作正常(可能是因为类文件位于同一目录中)。然后我创建文件,一份已签名,另一份未签名。当我运行它们时,我得到了这些错误。请注意,这些 jar 位于一个单独的文件夹中,其中仅包含这些 jar,不包含类文件。
最佳答案
我同意安德鲁的观点。
我创建了一个应用程序,可以帮助我们找到代码签名问题。
https://gist.github.com/2596125
(因为我们不想向安德鲁发送垃圾邮件,所以我创建了这个。)
根据最终发布的更多信息,您似乎没有将 TestPrivileges$1
类与 jar 一起打包。
要解决此问题,请对 jar 打包执行此操作:
jar cvf TestPrivileges.jar TestPrivileges.class TestPrivileges$1.class
关于java - 在已签名的小程序中使用 AccessControler.doPrivileged 时出现 InvocableTargetException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10450956/
我试图弄清楚一些遗留代码在做什么。这条线到底在做什么,为什么我需要这种方式? String lineSeparator = (String) java.security.AccessControlle
我尝试通过 checkPermission() 方法获取目录权限,如代码中所示。 private static boolean dirPermissions(String dir, String pe
确实,在(签名的)小程序中,只有当我的小程序与 JavaScript 通信时,我才需要使用 AccessController.doPrivileged() ? 最佳答案 没有。如果不受信任的小程序访问
我有这段代码,将 JavaServer 附加到 RMIRegistry,这是在 PrivilegedAction 中完成的 //start javaengineserver
如何检查应用程序是否有权读取或写入文件系统上的特定目录。我正在尝试这个: try { AccessController.checkPermission(new FilePermission(f
我可以尝试简单的代码。 我有一个 AccessController,它有 behaviors(): class AccessController extends BackendController {
我正在尝试了解Java的权限模型。我尝试了这个示例代码: public static void main(String[] args) { File file = new File("/etc/p
我的 ssl 服务器上有一个后端项目,例如 ssl.mybackend.com,包含以下内容: class FormController extends Controller { public
上下文 我正在编写一个 Java 系统,其中的代码在非常严格的沙箱中执行。一个查询(由一个或多个类组成)在执行期间只允许访问一个文件夹(以及文件夹中包含的子文件夹和文件)。 我通过使用 Securit
如果我理解 AccessController.doPrivileged正确地说,不受信任的代码应该能够通过确实具有权限的中间方法调用需要权限的方法(例如System.getProperty())。 p
我无法找出或找出如何使用PHP permission="allowed"从此xml解析simplexml_load_file值。 基本结构是 如何获得最后一行上permission
我在grail应用程序中使用了shiro security。 Grails版本:2.2.1 四郎:1.2.0 我在为启用了过滤器的 Controller 编写grails单元测试用例时遇到问题。当测试
我是 Java 安全方面的新手;有一个基本问题。 我目前的理解是: 每当您需要限制不受信任的代码可以执行的操作时,实现此目的的方法之一是使用自定义安全策略,并在 Subject.doAsPrivile
我有 this xml file 我正在尝试访问PHP中的标记permission中的yt:accessControl属性值 echo (string)$xmlyt->entry->children(
我最近扩展了 CWebUser 类,现在它有这样有用的方法: Yii::app()->user->isAdmin; Yii::app()->user->isTeacher; Yii::app()->u
我想动态下载类;下面我编写了相同的代码。 public class ClientProg { public static void main(String[] args) throws Cla
我试图禁止在 AccessController.doPriviliged() 方法中创建线程。下面的方法创建并运行线程。我用 -Djava.security.manager 运行它。根据此链接,如果未
我在小程序中有以下通过 JavaScript 调用的方法 public String getAString() { Object rc = AccessController.d
我正在弄清楚如何在没有权限的情况下运行外部代码(来自不同的 JAR),这样它就不会损害我自己的系统。我几乎可以正常工作了,但是我发现了一个奇怪的情况,即调用 System.exit(0) 仍然会杀死整
我正在为管理多种数据备份的内部软件开发小规模部署系统。部分任务是备份某些文件夹,我想备份应用于这些文件夹的 ACL,以便在恢复时文件仍能按预期工作。 制作一些代码的原型(prototype),我曾尝试
我是一名优秀的程序员,十分优秀!