基于 Java 2 运行时安全模型的线程协作
2009-09-20 00:00:00 来源:WEB开发网我们使用如清单 4 所示的命令来签名 client.jar 与 server.jar。
清单 4. 签名 JAR 文件
>jarsigner.exe -keystore C:\paper\.keystore
-storepass 111111 c:\paper\client.jar client
>jarsigner.exe -keystore C:\paper\.keystore
-storepass 111111 c:\paper\server.jar server
在清单 4 中,我们使用了别名为 client 的数字证书来签名 client.jar 文件,使用别名为 server 的数字证书来签名 server.jar 文件。
使用图形化的工具 policytool.exe 创建清单 5 所示的 Policy 文件。
清单 5. Policy 文件
/* AUTOMATICALLY GENERATED ON Thu May 14 15:40:25 CST 2009*/
/* DO NOT EDIT */
keystore "file:////C:/paper/.keystore";
grant signedBy "client" {
permission java.io.FilePermission "c:\\paper\\client\\*","read,write";
};
grant signedBy "server" {
permission java.security.AllPermission;
};
Policy 文件指出,所有被”client”签名的代码具有读写” c:\\paper\\client\\”目录下所有文件的权限,而所有被”server”签名的代码具有所有的权限。Java 将根据该策略文件按照签名者创建相应的保护域。
一切就绪,我们运行代码,如清单 6 所示。
清单 6. 运行程序
>java -Djava.security.manager
-Djava.security.policy=my.policy -classpath client.jar;server.jar
sample.permtest.client.Client
更多精彩
赞助商链接