Repository navigation
Administration RightsManagement
Das Rechtemanagement des Usermanager ist ein Resource-Driven-Right-Management. Dies bedeutet, es gibt keine "Rollen" für Benutzer, sondern nur Zuordnungen, zwischen Ressourcen, Rechten und Benutzern.
Ein Recht setzt sich immer aus einer Ressource und einer dazugehörigen Aktion zusammen. Die Ressource wird durch einen Resources-Pfad identifiziert und die Aktion durch einen Aktionsbezeichner. Diese Vorgehensweise macht die Rechteverwaltung universell, auch über Applikationsgrenzen hinweg einsetzbar. Welche Ressourcen es gibt, und welche Rechte, ist dabei den Anwendungen überlassen. Der Usermanager-Server muss dazu auch keine Liste von möglichen Rechten und Aktionen kennen. Kennt der Server keine Kombination für eine Ressource und ein Recht, so hat niemand eine Berechtigung auf diese Ressource in Kombination mit der Aktion.
Beispiel für Ressourcen: Application1.Stores.Products Application1.Stores.Seller
Beispiele für Aktionen: create, update, delete
Die Rechte werden über die Datenbanktabellen, die Client-Bibliothek oder die REST-Schnittstelle eingetragen. Eine grafische Oberfläche zur Verwaltung der Benutzer ist nicht vorgesehen, da übliche Datenbankverwaltungstools wie pgAdmin hierzu vollkommen ausreichend sind.
Um eine Resource hinzuzufügen, muss diese lediglich in die Tabelle usermanager.resources eingetragen werden. Einzutragen ist der komplette Pfad. Eine Ressource ist eindeutig, kann also nicht mehrmals angelegt werden. Existiert eine Ressource nicht ist dies gleichbedeutend mit einer Ressource, auf die keine Rechte existieren.
Jede Anwendung, welche das Rechtesystem nutzen möchte, muss einmalig registriert werden. Mit der Registrierung erhält sie ein Benutzerkonto und eine ApplicationResource. Die ApplicationResource sorgt für die eindeutige Zuordnung von Resourcen. Das Benutzerkonto erlaubt den Zugriff auf die ApplicationResource.
Beispiel: Application1.Stores.Products hier ist "Application1" die ApplicationResource.
Beispiel: grantRight(Testbenuzter,Application1.Stores.Products,create,Appliation1Benuztername,Application1Password) setzt das Recht Produkte anzulegen für den Testbenuzter unter Verwendung der Identifizierung des Benutzerkontos für die Applikation.
Die *-Resource ist eine spezielle Resource, welche das gesetzte Recht auf alle untergeordneten Resourcen in dieser Hierarchie setzt.
Beispiel:
| Resource | Action |
|---|---|
| Application1.Stores.* | create |
Erlaubt das Anlegen von Produkten und Verkäufern.
Die *-Action ist eine spezielle Aktion, welche alle Aktionen auf ein Recht erlaubt. Alle Rechte umfasst dabei sowohl zum Anlegezeitpunkt definierte Aktionen, als auch evtl. erst später hinzukommende.
Beispiel:
| Resource | Action |
|---|---|
| Application1.Stores.Products | * |
Erlaubt alle Aktionen auf Produkte.
Administrationsrechte sind globale Rechte und können daher als Kombination aus *-Resource und *-Action definiert werden.
Beispiel:
| Resource | Action |
|---|---|
| Application1.* | * |
Rechte werden über die Datenbanktabelle usermanager.userrights administriert. Hier ist die id des Benutzers, die id der Ressource und die Aktion, welche erlaubt werden soll in eine Zeile einzutragen.
Die Rechte für die Benutzerverwaltung werden genauso vergeben und geprüft, wie die Rechte, welche dritte Anwendungen definieren können. Die folgende Tabelle listet alle Ressourcen und Aktionen, welche vom Usermanager interpretiert werden.
| Ressource | Aktion | Beschreibung |
|---|---|---|
| de.fhbielefeld.scl.usermanager.user | get | Daten anderer Benutzer abfragen |
| de.fhbielefeld.scl.usermanager.user | save | Daten anderer Benutzer speichern |
| de.fhbielefeld.scl.usermanager.userright | GRANT | Einem anderen Benutzer ein Recht geben |
| de.fhbielefeld.scl.usermanager.userright | revoke | Ein Recht von einem anderen Benutzer löschen |
| de.fhbielefeld.scl.usermanager.user | CREATE | Einen Benutzer anlegen |
| de.fhbielefeld.scl.usermanager.user | GETCHILDS | Daten von untergeordneten Benutzern abfragen |
| de.fhbielefeld.scl.usermanager.user | GETALL | Daten von anderen Benutzern abfragen |
| de.fhbielefeld.scl.usermanager.user | UPDATECHILDS | Daten von untergeordneten Benutzern ändern |
| de.fhbielefeld.scl.usermanager.user | UPDATEALL | Daten von anderen Benutzern ändern |
| de.fhbielefeld.scl.usermanager.user | DELETECHILDS | Alle untergeordneten Benutzer löschen |
| de.fhbielefeld.scl.usermanager.user | DELETEALL | Daten von anderen Benutzern löschen |
Hinweise:
- Ein Benutzer hat immer das Recht, seine eigenen Benutzerdaten abzufragen. Dafür muss er sein Passwort als Legitimation angeben.
- Ein Benutzer hat immer das Recht, seine eigenen Benutzerdaten zu speichern. Dafür muss er sein Passwort als Legitimation angeben.
- Ein Benutzer kann sich selbst anlegen.