ingenieurbüro für innovative informationstechnik

Dipl.-Ing. Jörg Beckmann

Einführung

     

Immer wieder müssen in Applikationen Benutzerrechte überprüft werden. Sowohl bei der Software-Entwicklung, als auch bei der Administration ist dies mit erheblichem Aufwand verbunden. Oftmals werden solche Berechtigungsschemata auf Bit-Felder abgebildet, die für jeden Anwender einzeln oder für Gruppen von Anwendern in einem mehr oder weniger übersichtlichen Bildschirm-Dialog angekreuzt werden müssen. Meistens sind die Gruppen-Strukturen sehr unflexibel, Gruppen die wiederum aus anderen Gruppen und/oder Anwendern (auch gemischt) bestehen können sind sehr selten möglich.

In der Konzeptionsphase für ein umfangreiches Web-basiertes Informationssystem mit geschätzten 20.000 Anwendern und sehr individuellen Zugriffsrechten stellte sich die Frage, ob es für die Rechte-Verwaltung nicht auch andere Möglichkeiten gibt.

Daraus wurde die Idee geboren, die Berechtigungen nicht starr über Bit-Felder, sondern dynamisch über Gleichungen zu definieren. Dabei stellen die Gleichungen streng genommen Mengenoperationen dar. Man kann Vereinigungsmengen, Schnittmengen und Differenzmengen bilden. Ein Anwender hat dann ein bestimmtes Recht, wenn er nach der Auflösung der Gleichungen — auch rekursiv über mehrere Ebenen — in der Ergebnismenge enthalten ist. Dabei kann die Applikation ein Recht einerseits direkt über den Namen einer Gleichung andererseits aber auch über eine dynamisch in der Applikation zusammengestellte Gleichung abfragen.

Die Details dieses Konzepts haben wir in einem White Paper zusammengefasst.

Im iiitAccessServer sind zwei Varianten von Caches und Datenquellen implementiert.

Die Basis-Version arbeitet als Datenquelle mit einer Java-Property-Datei und hat nur einen einfachen 1st-Level Cache. Die Property-Datei kann zwar sehr einfach mit einem Texteditor bearbeitet werden, Änderungen werden zur Laufzeit des Servers jedoch nicht erkannt. Diese Basis-Version ist daher in erster Linie als Test- und Entwicklungssystem gedacht.

Für den produktiven Einsatz kann der iiitAccessServer über Plug-Ins um zusätzliche Schnittstellen, Datenquellen und Caches erweitert werden. Im Lieferumfang enthalten sind eine Datenquelle mit LDAP-Anbindung und ein Datenbank-gestützter persistenter 2nd-Level-Cache. Bei diesem werden alle Gruppendefinitionen und vordefinierten Gleichungen aus der LDAP-Datenbank ausgelesen und in optimierter Form in einer MySQL-Datenbank hinterlegt. Alle laufenden Änderungen in der LDAP-Datenbank werden von einem Hintergrund-Thread — dem CacheManager — mitgelesen und zeitnah in den Cache übertragen.

Zur Lastverteilung und zur Steigerung der Ausfallsicherheit kann der iiitAccessServer auf beliebig vielen Rechnern parallel installiert werden. Da dieses Berechtigungssystem als Server implementiert wurde, kann es auch von verschiedenen Applikationen gleichzeitig genutzt werden. Für den Zugriff durch Applicationen ist eine TCP/IP-Schnittstelle mit einem einfachen ASCII-Protokoll implementiert worden, so dass der Server nicht nur von anderen Java-Programmen sondern aus allen Programmiersprachen sehr einfach angesprochen werden kann. Durch die modulare Struktur können weitere Schnittstellen als Plug-In einfach hinzugefügt werden. Eine RMI-Schnittstelle für Java-Programme ist in Vorbereitung.

Der 2nd-Level-Cache kann seine Daten auf bis zu 257 einzelne Datenbanken verteilen. Die Lastverteilungsmechanismen des iiitAccessServers werden dabei ebenfalls vollständig unterstützt. Lediglich der CacheManager darf zu jeder Zeit nur einmal laufen.

Eine Anmerkung zum Schluß: Wir arbeiten vor allem mit Linux und entwickeln für Linux. Entsprechend sind unsere Programme meistens nur unter Linux getestet und auch die Installationanleitungen etc. beziehen sich nur auf Linux. Trotzdem sollte sich die Software auch unter anderen Betriebssystemen einsetzen lassen. Falls Sie dabei Fehler finden, nehmen wir Ihre Hinweise und Korrekturen gerne entgegen und werden sie bei der nächsten Version nach Möglichkeit berücksichtigen. Wenden Sie sich in solchen Fällen bitte an support@iiit.de.

   
[Menü ausblenden]