Regelbasierte Berechtigung

Die Berechtigungen in TopLogic basieren darauf, dass Nutzer Rollen auf Fachobjekten haben. Ein Nutzer darf dann eine Funktion ausführen, wenn eine seiner Rollen, die er auf dem Berechtigungsobjekt der Funktion hat, die Berechtigung besitzt, die Kommandogruppe der Funktion in der Sicht auszuführen, in welcher die Funktion definiert ist.

Nutzer

Eine Session ist verknüpft mit einem Nutzer repräsentiert als Fachobjekt des Typs Person (vgl. PersonMeta.xml). Der Nutzer wird einer Session beim Login zugewiesen und ist über com.top_logic.util.TLContext.getPerson() verfügbar.

Funktion

Funktionen im System sind repräsentiert über sog. CommandHandler, die an Komponenten registriert sind und deren zusätzliche Eigenschaften (neben der eigentlichen Ausführungslogik) konfigurierbar sind (vgl. com.top_logic.tool.boundsec.CommandHandler.Config).

Kommandogruppe einer Funktion

Die Kommandogruppe einer Funktion wird bei der Funktion konfiguriert (com.top_logic.tool.boundsec.CommandHandler.Config.getGroup()). Eine Kommandogruppe ist ein Name, unter dem gleichartige Funktionen berechtigungstechnisch zusammengefasst werden. Häufig verwendete Kommandogruppen sind Read, Write, Create, Delete.

Berechtigungsobjekt einer Funktion

Das Berechtigungsobjekt einer Funktion wird bestimmt über die Methode com.top_logic.tool.boundsec.CommandHandler.getBoundObject(LayoutComponent, Map<String, Object>) der Funktion. Diese fällt i.d.R. zurück auf com.top_logic.tool.boundsec.BoundChecker.getCurrentObject(BoundCommandGroup) der Komponente, an der die Funktion aufgerufen wird.

Rollen-Definition

Rollen werden in einem Modul (TLModule) definiert (vgl. Konfigurationssektion com.top_logic.element.config.ModuleConfig.getRoles()). Hier werden die Rollen(-namen) aufgezählt, die für dieses Modul verwendet werden können.

Rollen-Berechtigungen

Das Recht einer Rolle, in einer gewissen Sicht eine Funktion mit einer gewissen Kommandogruppe ausführen zu dürfen, wird in der Administration "Rollenprofile" festgelegt. Hierbei werden Tripel (Rolle, Berechtigungskomponente, Kommandogruppe) in der Datenbank abgelegt, wenn eine Rolle in einer Sicht unterhalb einer Berechtigungskomponente Funktionen mit einer gewissen Kommandogruppe ausführen darf.

Rollen-Regeln

Um Rollen auf Fachobjekten zu vergeben, werden Regeln definiert, welche Rollen aus Attributbelegungen von Fachobjekten ableiten (Nutzer- und Gruppenzuweisungen in nutzer- und gruppenwertigen Attributen). Diese Regeln werden in der Konfigurationssektion com.top_logic.element.boundsec.manager.ElementAccessManager.Config.getRoleRules() definiert.

  • Eine Regel bezieht sich immer auf einen bestimmten Objekttyp (Metaelement oder Metaobjekt).
  • Eine Regel vergibt genau eine Rolle auf Objekten dieses Typs.
  • Eine Regel definiert über einen Pfad eine Menge anderer Objekte, aufgrund derer die Gruppen und Nutzer bestimmt werden, welche die Rolle auf dem Ausgangsobjekt erhalten. Diese Menge wird im Folgenden Bestimmungsmenge genannt.
    • Ein Pfad besteht aus einzelnen Pfadelementen und benennt eine Assoziation oder ein Attribut.
    • Der Pfad ist gerichtet und beginnt mit dem ersten Pfadelement.
    • Jedes Pfadelement bestimmt ausgehend von den bisher gefundenen Objekten eine neue Menge von Objekten.
    • Bei der Anwendung einer Regel auf ein gegebenes Objekt bildet dieses auch die Anfangsmenge, auf die das erste Pfadelement angewendet wird.
    • Das Ergebnis des letzten Pfadelements bildet die Bestimmungsmenge.
    • Ist kein Pfadelement angegeben, so entspricht die Bestimmungsmenge dem Ausgangsobjekt.
      • Für Assoziationen:
        • Ausgehend von den über den bisherigen Pfad erhaltenen Menge werden in der neue Menge genau alle über die gegebene Assoziation erreichbaren Objekte übernommen.
        • Ist das Pfadelement als invers markiert, so wird die Assoziation rückwärts gegangen, ansonsten vorwärts.
      • Für Attribute:
        • Die Bestimmungsmenge ergibt sich aus der Vereinigung aller Attributwerte des angegebenen Attributs auf Objekten der Ausgangsmenge.

Explizite Rollenzuweisung

Zusätzlich zu den Rollen-Regeln können Nutzer und Gruppen explizit Rollen an Fachobjekten zugewiesen werden. Diese explizite Rollenzuweisung geschieht in der Adminstration in der Sicht "Benutzerrechte". Hier wird einem Nutzer explizit eine Rolle auf einem konkreten Objekt zugewiesen.