University of Cincinnati logo and link  
Permissions Example
 
  UC ingotAdmittedly, 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();
        }
            
    }
}
 
 

  • The permissions file:
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