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 Java-Applikationen existiert eine RMI-Schnittstelle. Für andere Applicationen wurde eine TCP/IP-Schnittstelle mit einem einfachen ASCII-Protokoll implementiert, 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.
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 Schluss: 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.
Der iiitAccessServer besteht aus zwei Teilen, dem eigentlichen Server und einer Library zum Einbinden in andere Java Applikationen. Um die freie Weitergabe zu gewährleisten und gleichzeitig auch die Benutzung in kommerziellen Umgebungen zu ermöglichen, gelten für diese Teile unterschiedliche Lizenzbedingungen.
Dieses Programm ist freie Software. Sie können es unter den Bedingungen der GNU General Public License (GPL), wie von der Free Software Foundation veröffentlicht, weitergeben und/oder modifizieren, entweder gemäß Version 2 der Lizenz oder (nach Ihrer Option) jeder späteren Version.
Die Veröffentlichung dieses Programms erfolgt in der Hoffnung, daß es Ihnen von Nutzen sein wird, aber OHNE IRGENDEINE GARANTIE, sogar ohne die implizite Garantie der MARKTREIFE oder der VERWENDBARKEIT FÜR EINEN BESTIMMTEN ZWECK. Details finden Sie in der GNU General Public License.
Diese Bibliothek ist freie Software. Sie können sie unter den Bedingungen der GNU Lesser General Public License (LGPL), wie von der Free Software Foundation veröffentlicht, weitergeben und/oder modifizieren, entweder gemäß Version 2.1 der Lizenz oder (nach Ihrer Option) jeder späteren Version.
Die Veröffentlichung dieser Bibliothek erfolgt in der Hoffnung, daß sie Ihnen von Nutzen sein wird, aber OHNE IRGENDEINE GARANTIE, sogar ohne die implizite Garantie der MARKTREIFE oder der VERWENDBARKEIT FÜR EINEN BESTIMMTEN ZWECK. Details finden Sie in der GNU Lesser General Public License.
Falls Sie mit den Bedingungen der GPL bzw. LGPL nicht einverstanden sind, so stehen kostenpflichtige Lizenzen auf Anfrage zur Verfügung. Wenden Sie sich dann bitte an support@iiit.de.