Admittedly,
this was not as easy as planned. I had to enter certain permissions
in the permissions file for the application to even run. Then, once
those permissions were present and the program run, the very permissions
that allowed the program to run did not appear in the printed output!
Nor did any of the other test permissions I added.
So then I gave it all permissions, plus the permissions I had already
added. Suddenly it printed out all permissions in the file.
So my conclusion is that I have to explicity give it some type of permission
to read and print permissions from a Permissions object. I will continue
to research this until I find an answer. (Or I'll give extra credit
to anyone who finds it before me.)
-
Needless to say, the source code is:
/*
* SecurityChecker.java
*
* Created on July 16, 2003, 12:56 AM
*/
import java.security.*;
import java.util.Enumeration;
/**
*
* @author unknown
* @version
*/
public class SecurityChecker {
/** Creates new SecurityChecker */
public SecurityChecker() {
}
public static void main(String args[]) {
SecurityChecker sc = new SecurityChecker();
sc.run();
}
public void run(){
try {
System.setSecurityManager(new SecurityManager());
// Policy policy = Policy.getPolicy();
ProtectionDomain pd = this.getClass().getProtectionDomain();
System.out.println("PD: " + pd.toString());
PermissionCollection pm = pd.getPermissions();
System.out.println("PM: " + pm.toString());
Enumeration e = pm.elements();
while(e.hasMoreElements()) {
Permission p = (Permission) e.nextElement();
System.out.println("Permission Name: " + p.getName());
}
} catch (Exception e)
{
System.out.println("Exception. Aauguuguguuggugaaaaaaaaaaaa!" + e.getMessage());
e.printStackTrace();
}
}
}
grant {
permission java.security.AllPermission;
permission java.lang.RuntimePermission "getProtectionDomain";
permission java.security.SecurityPermission "setPolicy";
permission java.security.SecurityPermission "getSignerPrivateKey";
permission java.awt.AWTPermission "accessClipboard";
};
-
And the output (Copied from a DOS window):
C:\Projects\30IT398>java -Djava.security.policy==sc.policy SecurityChecker
PD: ProtectionDomain (file:/C:/Projects/30IT398/ <no certificates>)
sun.misc.Launcher$AppClassLoader@17172ea
<no principals>
java.security.Permissions@1bab50a (
(java.security.AllPermission <all permissions> <all
actions>)
(java.io.FilePermission \C:\Projects\30IT398\- read)
(java.awt.AWTPermission accessClipboard)
(java.security.SecurityPermission getSignerPrivateKey)
(java.security.SecurityPermission setPolicy)
(java.lang.RuntimePermission exitVM)
(java.lang.RuntimePermission getProtectionDomain)
)
PM: java.security.Permissions@c3c749 (
(java.io.FilePermission \C:\Projects\30IT398\- read)
(java.lang.RuntimePermission exitVM)
)
Permission Name: \C:\Projects\30IT398\-
Permission Name: exitVM
|