Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## de.jsystems.framework.security.acl
Class BaseAcl

    java.lang.Object
      de.jsystems.framework.security.acl.BaseOwner
          de.jsystems.framework.security.acl.BaseAcl

All Implemented Interfaces:
  Acl, Owner

public class BaseAcl
extends BaseOwner
implements Acl

Beispielimplementierung für das Interface Acl. Diese Klasserepräsentiert eine Access Control List(ACL). Eine ACL ist eine Datenstruktur um den Zugriff auf Ressourcen zu schützen. Eine ACL kann als Tabelle mit mehreren Einträgen betrachtet werden. Jeder Eintrag vom Typ `AclEntry` enthält einen Satz von Rechten(`Permission`) für einen `Principal`. (Ein 'Principal' ist eine Einheit und stellt entweder eine einzelne Person(User) oder eine Gruppe dar.)) Zusätzlich ist jeder Eintrag entweder positiv oder negativ. Positiv bedeutet hier, das alle enthaltenen Rechte dem zugehörigen Principal zugewiesen sind. Negativ bedeutet, das alle enthaltenen Rechte dem zugehörigen Principal entzogen sind. Die Einträge in einer ACL unterliegen den folgenden Regeln: Jeder Principal kann nur einen positiven Eintrag und einen negativen Eintrag haben. Das heist mehrere positive oder negative Einträge sind nicht erlaubt für einen Principal. Jeder Eintrag hat einen Satz von Rechten, die dem Principal entweder erlaubt oder entzogen sind. Somit machen mehrere positive(=erlaubte) oder negative(=verbotene) Einträge auch keinen Sinn. Wenn es für einen Principal keine Einträge gibt, so hat dieser Principal einen NULL-Rechte-Satz (einen leeren Satz von Rechten). Wenn es einen positiven Eintrag gibt, der dem Principal ein Recht zusichert und einen negativen Eintrag, der im das gleiche Recht verweigert, so bedeutet das, daß dieses Recht weder zugewiesen noch entzogen ist. Indiviuelle Rechte zu einem konkreten Benutzer überschreiben Einstellungen aus der Gruppe zu der der Benutzer gehört. Das heist individuelle negative Rechte überschreiben die Erlaubnis zu diesem Recht aus der Gruppe und Rechte, die der Gruppe entzogen wurden können einzelnen Mitgliedern der Gruppe wieder zugewiesen werden. Das java.security.acl-Package enthält alle Interfaces für die Implementierung einer ACL und der benötigten Strukturen(AclEntry, Group, Owner, etc.). Im Package sun.security.acl(Enthalten in der Datei `rt.jar`. Keine Beschreibung im JDK vorhanden) befindet sich eine Default-Implementierung zu diesen Interfaces. Aus dieser Default-Implementierung entstanden die Klassen im Package de.jsystems.framework.security.acl.

Version:
  1.0
  Copyright by Jens Homm 2001 - 2003
Author:
  Jens Homm JSYSTEMS

Constructor Summary
`BaseAcl(Principal owner, String name)` Konstruktor.

Method Summary
`boolean` | `addEntry(Principal caller, AclEntry entry)` Fügt der ACL einen neuen Eintrag hinzu.
`boolean` | `checkPermission(Principal principal, Permission permission)` Prüft ob der übergebene Principal über das übergeben Recht verfügt.
`Enumeration` | `entries()` Gibt eine Enumeration mit allen Einträgen aus der ACL zurück.
`Enumeration` | `getGroupNegative(Group g)` Gibt eine Enumeration mit allen entzogenen Rechten der Gruppe zurück.
`Enumeration` | `getGroupNegative(Principal principal)` Gibt eine Enumeration mit allen entzogenen Rechten der Gruppe zurück zu der der Principal gehört.
`Enumeration` | `getGroupPositive(Group g)` Gibt eine Enumeration mit allen erlaubten Rechten der übergebenen Gruppe zurück.
`Enumeration` | `getGroupPositive(Principal principal)` Gibt eine Enumeration mit allen erlaubten Rechten der Gruppe zurück zu der der Principal gehört.
`Enumeration` | `getIndividualNegative(Principal principal)` Gibt eine Enumeration mit allen entzogenen Rechten des Principals zurück.
`Enumeration` | `getIndividualPositive(Principal principal)` Gibt eine Enumeration mit allen Rechten des Principals zurück.
`String` | `getName()` Gibt den Namen der ACL zurück.
`Enumeration` | `getPermissions(Principal user)` Gibt eine Enumeration mit einer Liste aller erlaubten Rechten für den spezifizierten Principal (repräsentiert entweder einen User oder eine Gruppe) zurück.
`boolean` | `removeEntry(Principal caller, AclEntry entry)` Löscht einen Eintrag aus der ACL.
`void` | `setName(Principal caller, String name)` Setzt den Namen für diese ACL.
`String` | `toString()` Gibt eine Stringrepräsentation über den Inhalt dieser ACL zurück.

Methods inherited from class de.jsystems.framework.security.acl.BaseOwner
`addOwner, deleteOwner, isOwner`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

Methods inherited from interface java.security.acl.Owner
`addOwner, deleteOwner, isOwner`

Constructor Detail

### BaseAcl

    public BaseAcl(Principal owner,
                   String name)

  Konstruktor. Legt eine neue ACL an. Der übergebene Principal(User) ist der Owner dieser Acl. Nur dieser kann an der ACL Änderungen vornehmen(Neue Owner hinzufügen oder löschen, neue Einträge hinzufügen).

Parameters:
  `owner` - Eigentümer der ACL.
  `name` - Der Name der ACL.

Method Detail

### setName

    public void setName(Principal caller,
                        String name)
                 throws NotOwnerException

  Setzt den Namen für diese ACL. Diese Methode kann nur vom Besitzer der ACL aufgerufen werden.

  Specified by:
    `setName` in interface `Acl`
  Parameters:
    `caller` - Der Principal, der diese Methode aufgerufen hat. Er muß ein Owner dieser ACL sein, sonst wird eine Exception ausgelöst.
    `name` - Der Name für diese Acl.
  Throws:
    `NotOwnerException` - wenn der Aufrufer(caller) kein Besitzer dieser ACL ist.

### getName

    public String getName()

  Gibt den Namen der ACL zurück.

  Specified by:
    `getName` in interface `Acl`
  Returns:
    Der Name der ACL.

### addEntry

    public boolean addEntry(Principal caller,
                            AclEntry entry)
                     throws NotOwnerException

  Fügt der ACL einen neuen Eintrag hinzu. Ein Eintrag gehört zu einem Principal(Ein Benutzer oder eine Gruppe) und enthält einen Satz von Rechten. Jeder Principal kann maximal einen positiven(Satz mit erlaubten Rechten) und einen negativen(Satz mit entzogenen Rechten) Eintrag haben. Wenn es für den Eigentümer des Eintrages schon einen Eintrag vom gleichen Typ in der ACL gibt wird false zurückgegeben und der Eintrag wird nicht hinzugefügt.

  Specified by:
    `addEntry` in interface `Acl`
  Parameters:
    `caller` - Der Principal, der diese Methode aufgerufen hat. Er muß ein Owner dieser ACL sein, sonst wird eine Exception ausgelöst.
    `entry` - Der Eintrag der der ACL hinzugefügt werden soll.
  Returns:
    `true` bei Erfolg, `false` wenn es einen Eintrag vom gleichen Typ für den zugehörigen Principal schon gibt.
  Throws:
    `NotOwnerException` - wenn der Aufrufer kein Owner dieser ACL ist.

### removeEntry

    public boolean removeEntry(Principal caller,
                               AclEntry entry)
                        throws NotOwnerException

  Löscht einen Eintrag aus der ACL.

  Specified by:
    `removeEntry` in interface `Acl`
  Parameters:
    `caller` - Der Principal, der diese Methode aufgerufen hat. Er muß ein Owner dieser ACL sein, sonst wird eine Exception ausgelöst.
    `entry` - Der zu löschende Eintrag in der ACL.
  Returns:
    `true` bei Erfolg, `false` wenn es diesen Eintrag in der ACL nicht gibt.
  Throws:
    `NotOwnerException` - wenn der Aufrufer kein Owner dieser ACL ist.

### getPermissions

    public Enumeration getPermissions(Principal user)

  Gibt eine Enumeration mit einer Liste aller erlaubten Rechten für den spezifizierten Principal (repräsentiert entweder einen User oder eine Gruppe) zurück. Diese Liste wird folgendermassen ermittelt: Wenn es keinen Eintrag für diesen Principal gibt wird eine leere Enumeration zurückgegeben. Andernfalls werden erst alle erlaubten Rechte der Gruppe ermittelt zu der der Principal gehört(Ein Principal kann zu mehreren Gruppen gehören. Eine Gruppe wird durch die Implementierung der Klasse BaseGroup dargestellt.). Der Gruppe erlaubte Rechte ist die Vereinigung(Union) aller positiven Rechte aller Gruppen zu denen der Principal gehört. Der Gruppe entzogene Rechte ist die Vereinigung aller entzogener Rechte aller Gruppen zu denen der Principal gehört. Falls sich ein Recht in beiden(negativen und positiven)Rechtelisten befindet wird es aus beiden Listen entfernt. Die individuellen Rechte werden genauso ermittelt. Die positive Rechteliste enthält alle Rechte, die sich im positiven Eintrag befinden(sofern vorhanden), die negative Rechteliste enthält alle Rechte, die sich im negativen Eintrag befinden(sofern vorhanden). Die individuelle positive(oder negative) Rechteliste kann leer sein wenn keine entsprechenden Einträge vorhanden sind. Die endgültige Liste der für den spezifizierten User erlaubten Rechte wird nun nach der einfachen Regel ermittelt das individuelle Rechte Gruppenrechte überschreiben. Das heist, das die individuellen entzogenen Rechte die der Gruppe erlaubten Rechte überschreiben und die individuell erlaubten Rechte die der Gruppe entzogenen Rechte überschreiben.

  Specified by:
    `getPermissions` in interface `Acl`
  Parameters:
    `user` - Der Principal dessen Rechte zurückgegeben werden sollen.
  Returns:
    Einen Satz von Rechten die dem User zugeordnet sind.

### checkPermission

    public boolean checkPermission(Principal principal,
                                   Permission permission)

  Prüft ob der übergebene Principal über das übergeben Recht verfügt. Wenn ja wird true zurückgegeben, ansonsten false. Diese Methode prüft, ob die übergebene Berechtigung in der Liste der erlaubten Rechte für diesen Principal enthalten ist. Dabei wird der gleiche Alorithmus benutzt wie in der Methode `getPermissions(java.security.Principal)`.

  Specified by:
    `checkPermission` in interface `Acl`
  Parameters:
    `principal` - Der Principal, dessen Berechtigung geprüft werden soll.
    `permission` - Die zu prüfende Berechtigung.
  Returns:
    `true` wenn der Principal über die entsprechende Berechtigung verfügt, ansonsten `false`.
  See Also:
    `getPermissions(java.security.Principal)`

### entries

    public Enumeration entries()

  Gibt eine Enumeration mit allen Einträgen aus der ACL zurück. Jeder Eintrag in der Enumeration ist vom Typ `AclEntry`.

  Specified by:
    `entries` in interface `Acl`
  Returns:
    Eine Enumeration über alle Einträge in dieser ACL.

### toString

    public String toString()

  Gibt eine Stringrepräsentation über den Inhalt dieser ACL zurück. Dabei werden alle in der ACL enthaltenen Eintraege vom Typ `AclEntry` in einem StringBuffer aneinander gefuegt.

  Specified by:
    `toString` in interface `Acl`
  Returns:
    Eine Stringrepräsentation über den Inhalt dieser ACL.

### getGroupPositive

    public Enumeration getGroupPositive(Principal principal)

  Gibt eine Enumeration mit allen erlaubten Rechten der Gruppe zurück zu der der Principal gehört. Falls der Principal zu mehreren Gruppen gehört werden die Rechte aller Gruppen zu denen der Principal gehört zurückgegeben.

  Parameters:
    `principal` - - Ein Principal desen Rechte ausgelesen werden sollen.
  Returns:
    Eine Enumeration mit allen Rechten der Gruppe(n) zu denen der Principal gehoert.

### getGroupNegative

    public Enumeration getGroupNegative(Principal principal)

  Gibt eine Enumeration mit allen entzogenen Rechten der Gruppe zurück zu der der Principal gehört. Falls der Principal zu mehreren Gruppen gehört werden die entzogenen Rechte aller Gruppen zu denen der Principal gehört zurückgegeben.

  Parameters:
    `principal` - Ein Principal dessen entzogene Rechte ausgelesen werden sollen.
  Returns:
    Eine Enumeration mit allen entzogenen Rechten der Gruppe(n) zu denen der Principal gehoert..

### getGroupPositive

    public Enumeration getGroupPositive(Group g)

  Gibt eine Enumeration mit allen erlaubten Rechten der übergebenen Gruppe zurück. Auch aus der Zugehörigkeit zu anderen Gruppen geerbte Berechtigungen werden mit zurück gegeben.

  Parameters:
    `g` - Eine Gruppe deren Rechte ausgelesen werden sollen.
  Returns:
    Eine Enumeration mit allen Rechten der Gruppe.

### getGroupNegative

    public Enumeration getGroupNegative(Group g)

  Gibt eine Enumeration mit allen entzogenen Rechten der Gruppe zurück. Auch aus der Zugehörigkeit zu anderen Gruppen geerbte entzogene Berechtigungen werden mit zurück gegeben.

  Parameters:
    `g` - Eine Gruppe deren entzogene Rechte ausgelesen werden sollen.
  Returns:
    Eine Enumeration mit allen entzogenen Rechten der Gruppe.

### getIndividualPositive

    public Enumeration getIndividualPositive(Principal principal)

  Gibt eine Enumeration mit allen Rechten des Principals zurück.

  Parameters:
    `principal` - Ein Principal dessen Rechte ausgelesen werden sollen.
  Returns:
    Eine Enumeration mit allen Rechten des Principals.

### getIndividualNegative

    public Enumeration getIndividualNegative(Principal principal)

  Gibt eine Enumeration mit allen entzogenen Rechten des Principals zurück.

  Parameters:
    `principal` - Ein Principal dessen entzogene Rechte ausgelesen werden sollen.
  Returns:
    Eine Enumeration mit allen entzogenen Rechten des Principals.

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD