# Sicherheitsabfrage eines signierten Applets auslesen



## Helian (30. Aug 2005)

Hallo Leute,

habe folgendes Problem: wie kann ich die Bestätigung/Nichtbestätigung der Zertifikatssicherheitsabfrage im Applet auslesen? Denn ich habe das Problem, dass ein bereits mit einem Zertifikat signiertes Applet trotz der *Verneinung* der Sicherheitsabfrage geladen wird. (Die sicherheitskritischen Funktionen funktionieren natürlich nicht, aber das *unberechtige Laden des Applets* ist schon seltsam - oder?)

MfG


----------



## Sky (30. Aug 2005)

Das Laden ist nicht unberechtigt.

Du verneinst lediglich, dass die sicherheitsrelevanten Funktionen ausgeführt werden. Und das funktioniert eigentlich zuverlässig.


----------



## Helian (30. Aug 2005)

O.k. mag sein. Aber gibt es die Möglichkeit so eine Art "Request" vom Abfragedialog auszulesen, um das Laden des Applets bei Nichtbestätigung generell zu Vermeiden bzw. zu Ändern, damit meine ich nicht erst die SecurityExceptions abzufangen, wenn sie auftreten, sondern "vorher" einzugreifen.?

(So eine Art getAppletContext().getAbfragedialog oder über die JVM oder so).


----------



## Sky (30. Aug 2005)

Ohne es genau zu wissen: 
	
	
	
	





```
System.getSecurityManager();
```
 liefert Dir den aktuell gesetzten SecurityManager. Evtl. hilft Dir das weiter !?


----------



## Guest (30. Aug 2005)

Danke dir, dass hat mich auf den richtigen Pfad geführt.
Löse beispielsweise über getSecurityManager().checkRead("bla") eine Exception aus usw. usw. bzw. werde ich mich mal näher mit Permissions auseinander setzen. Danke nochmal!


----------



## Sky (31. Aug 2005)

Poste mal bitte die Lösung, sobald Du sie gefunden hast... bin auch daran interessiert.


----------



## Guest (31. Aug 2005)

Hallo, da es witziger Weise eine Exception schmeißt, wenn ich versuche die Permissions auszulesen und vorher die Sicherheitsabfrage verneine, habe ich mich damit begnügt eine ganz simple Exception zu provozieren:

```
boolean per_flag=true;
        try{
        	System.getSecurityManager().checkRead("dummy");
        } catch (Exception e){
        	per_flag = false; 
        }
        
        if(per_flag){

              //do normal Appletcode      	

        }else{
        	
             //do something different

        }
```
Natürlich stellt sich hier die Frage nach der Eleganz der Lösung, aber vielleicht bin ich auch bloß zu doof die Permissions richtig auszulesen... möglicherweise hat ja einer von euch eine bessere Idee?

///////////////////////////////////////////////////////////////////////////////////////////

Der Code den ich für den Versuch des Permissionreadings benutzte, hatte in etwa folgende Form:



```
// Get the protection domain for the class
    ProtectionDomain domain = this.getClass().getProtectionDomain();
    
    // With the protection domain, get all the permissions from the Policy object
    PermissionCollection pcoll = Policy.getPolicy().getPermissions(domain);
    
    // View each permission in the permission collection
    Enumeration enum = pcoll.elements();
    for (; enum.hasMoreElements(); ) {
        Permission p = (Permission)enum.nextElement();
    }
```

Aber bereits getProtectionDomain() liefert bei Nichtbestätigung des Sicherheitsdialoges eine AccesException.


----------

