In der vorliegenden Implementierung konnte der Permission Manager nicht vollständig implementiert werden, da noch keine Spezifikation der konkreten Policy Sprache für die Permission Policy vorliegt. Entsprechend können momentan keine dynamischen Entscheidungen anhand der Identität oder anderer Attribute der zu autorisierenden Entität durchgeführt werden.
Stattdessen wurde die Standard-Implementierung der Java System Policy benutzt. Somit konnte nur die Autorisierung anhand der Gattung einer Agenteninstanz realisiert werden.
Zur Demonstration der Möglichkeit der Implementierung eigener Permission-Klassen wurden vier Klassen implementiert. Diese bestimmen, ob eine Agenteninstanz berechtigt ist, Klassen zu definieren bzw. sie zu benutzen. Diese Permissions werden durch agentSystem.AgentClassloader ausgewertet.
Der Einsatz dieser Permission-Klassen soll nun anhand des Beispiels der SNMP-Bibliothek aus 6.7.2 erläutert werden. Hier werden zwei Fälle unterschieden:
grant codeBase "systemresource://com/other_company/SNMP_Agent" { permission ClassAllowDefinePermission "com.one_company.snmp.-" permission ClassAllowUsePermission "com.other_company.snmp.-" }
grant codeBase "systemresource://com/other_company/SNMP_Agent" { permission ClassDenyDefinePermission "com.one_company.snmp.-" permission ClassAllowUsePermission "com.other_company.snmp.-" }
Jeder Agenteninstanz wird eine eigene Protection Domain zugewiesen. Die Code Source der Protection Domain, mit der diese im System Policy File adressiert wird lautet:
systemresource://gattungsname
Dabei ist gattungsname das Package der Agentengattung.
Über die Java System Policy können nun Rechte über beliebige Permission-Objekte vergeben werden. Soll nun beispielsweise allen Agentengattungen aus dem Package de.unimuenchen.informatik.mnm.masa.agent das Recht eingeräumt werden, die Property testProperty auszulesen, ist folgende Zeile in das System Policy File einzufügen:
grant codeBase "systemresource://de/unimuenchen/informatik/mnm/masa/agent/-" { permission java.util.PropertyPermission "testProperty", "read"; }
Die CORBA-Methoden des Agentensystems werden überwacht, indem zu Beginn jeder Methode der Permission Manager befragt wird, ob die Aktion erlaubt werden darf oder nicht (vgl. 6.7.2).
Eine Überwachung der Schnittstellen der Agenteninstanzen konnte nicht implementiert werden, da Orbacus hierzu keine Schnittstellen bereitstellt (vgl. 7.1.2, 6.7.2).