AccessController-Nutzung

Ich versuche zu verstehen, die Grundlagen der java-Sicherheit und AccessController.doPrivileged() Verwendung
begonnen habe ich mit einem Beispielprogramm

import java.security.AccessController;
import java.security.PrivilegedAction;
public class AccessSystemProperty {
   public static void main(String[] args) {
     System.out.println(System.getSecurityManager());
       AccessController.doPrivileged(
        new PrivilegedAction<Boolean>(){
           public Boolean run(){
               System.out.println(System.getProperty("java.home"));
               return Boolean.TRUE;
           }
        }
       );
   }
}

wenn ich versuche, führen Sie obige code mit Standard-Sicherheit zu verwalten, bin ich immer AccessControlException
Mein stacktrace ist

C:\>java -Djava.security.manager AccessSystemProperty
java.lang.SecurityManager@923e30
Exception in thread "main" java.security.AccessControlException: access denied (
java.util.PropertyPermission java.home read)
        at java.security.AccessControlContext.checkPermission(Unknown Source)
        at java.security.AccessController.checkPermission(Unknown Source)
        at java.lang.SecurityManager.checkPermission(Unknown Source)
        at java.lang.SecurityManager.checkPropertyAccess(Unknown Source)
        at java.lang.System.getProperty(Unknown Source)
        at AccessSystemProperty$1.run(AccessSystemProperty.java:9)
        at AccessSystemProperty$1.run(AccessSystemProperty.java:8)
        at java.security.AccessController.doPrivileged(Native Method)
        at AccessSystemProperty.main(AccessSystemProperty.java:6)

Bitte helfen Sie mir, um sich ein klares Bild von

1), wenn, dann brauchen wir AccessController.doPrivileged() ?.(wenn SecurityManager vorhanden ist, verwenden wir AccessController.doPrivileged, warum diese nicht obigen Beispiel )
2) was ist der eigentliche Vorteil, den wir bekommen durch die Verwendung von AccessController und PrivilegedAction?.
3) brauchen wir benutzerdefinierten Richtliniendatei für das obige Beispiel funktioniert ?
Vielen Dank,
Paul

InformationsquelleAutor der Frage Paul Erric | 2012-01-02

Schreibe einen Kommentar