Die AccessController-Klasse ermöglicht eine abgestufte Zugriffskontrolle. Das ist seit Java 1.3 eines der Hauptfeatures des neuen Java-Sicherheitsmodells. Der Sicherheits-Manager wird aus Gründen der Abwärtskompatibilität immer noch in Java unterstützt. Doch inzwischen verwaltet die AccessController-Klasse die Zugriffskontrolle. Deshalb wird die Implementierung des Sicherheits-Managers der AccessController-Klasse in Java 2 nicht empfohlen. So lässt sich beispielsweise die Methode SecurityManager.checkRead(String Dateiname) wie folgt implementieren:
checkPermission(new FilePermission(fileName,"read"));
Und so sieht die entsprechende Methode SecurityManager.checkPermission(Permission Berechtigung) aus:
java.security.AccessController.checkPermission(permission);
Der Zugriff-Controller entscheidet, ob ein Zugriff gewährt wird. Dabei überprüft die Methode checkPermission(), ob der Code privilegiert ausgeführt werden muss. Falls das zutrifft, geht es mit der Methode doPrivileged() weiter. Der Zugriff-Controller liefert daneben eine Referenz auf den aktuellen Zugriffsverwaltungskontext. Das geschieht mit der Methode getContext().
Die AccessControlContext-Klasse verkapselt alle Informationen über Zugriffsparameter in der Anwendung. Sie kann eine oder mehrere ProtectionDomain-Klassen umfassen. Jede Klasse enthält Zugriffsrechte, die sich auf einen bestimmten Codeabschnitt beziehen. Für diesen Zweck stellt die ProtectionDomain-Klasse zwei weitere Klassen zur Verfügung:
Die ProtectionDomain-Klasse speichert auch Signaturinformationen in der SignedBy-Klasse, die wiederum ein Array von Zertifikatsobjekten enthält. Code, der aus derselben Quelle stammt und von denselben Personen (also Identitäten) signiert wurde, befindet sich in derselben Protection-Domain. Die checkPermission()-Methode des AccessControlContext-Objekts überprüft die Zugriffsberechtigungen in Bezug auf ProtectionDomain-Objekte, die für den aktuellen Kontext gelten.
Für Aktionen, die Sonderrechte während der Ausführung erfordern, lässt sich die doPrivileged()-Methode einsetzen. Dabei kommt ein vereinfachtes Entscheidungsverfahren zum Einsatz. Es wird angenommen, dass die aufrufende Protection-Domain über die Berechtigung zur Ausführung privilegierter Operationen verfügt. Die Arbeit mit doPrivileged() erfolgt normalerweise über eine PrivilegedAction-Schnittstelle, die keine Ausnahmefehler generiert.
AccessController.doPrivileged(new PrivilegedAction() { Public Object run() { // Die privilegierte Aktion kann einen Wert oder "null" zurückgeben. } } );
Der zweite Parameter für die doPrivileged()-Methode ist das AccessControlContext-Objekt. Es verweist auf einen korrekten Kontext, der zur Begrenzung des Zugriffs verwendet werden muss. Der Zugriff-Controller bietet daneben noch die getcontext()-Methode, um den Kontext zu bestimmen und zu verwenden.
Beim Online-Gaming kommt es nicht nur auf das eigene Können an. Auch die technischen Voraussetzungen…
Fast jedes zweite Unternehmen bietet keinerlei Schulungen an. In den übrigen Betrieben profitieren oft nur…
Huawei stellt auf der Connect Europe 2024 in Paris mit Xinghe Intelligent Network eine erweiterte…
Höchste Zeit für eine schnelle Kupfer-Glas-Migration. Bis 2030 soll in Deutschland Glasfaser flächendeckend ausgerollt sein.
Schon im April 2025 soll Android 16 den Status Plattformstabilität erreichen. Entwicklern gibt Google danach…
Die Hintermänner setzen KI-Chatbot-Tools als Köder ein. Opfer fangen sich den Infostealer JarkaStealer ein.