UMGT - Zugriffsschutz

Anmerkungen, Fragen und Hinweise zur Konfiguration dürfen in diesem Forum gepostet werden. // Notes, questions, and hints on the configuration can be posted here.
Antworten
Linadillar
Beiträge: 10
Registriert: 28.05.2010, 12:13:41
Wohnort: Baunatal / Kassel

UMGT - Zugriffsschutz

Beitrag von Linadillar » 20.10.2014, 13:07:57

Hallo zusammen,

für meine Application würde ich gerne das UMGT benutzen und ggf. erweitern. Jedoch stellt mich das UMGT momentan noch vor ein undurchdringliches Rätsel, dessen Lösung ich bisher nicht gefunden habe, auch nicht hier im Forum. Falls es doch im Forum beschrieben ist, so bitte ich um nachsicht.

Das Problem vor dem ich stehe ist, dass ich zum einen den kompletten UMGT Bereich in dem man Zugriff auf Benutzer, Gruppen, Rollen, etc hat mit einem Zugriff schützen möchte.
Desweiteren möchte ich einzelne Inhaltsseiten oder eigene Module nur berechtigten Personen zugänglich machen.

Nun gibt es ja Rechte und Sichtbarkeits Einstellungen, wie diese im Detail korrekt konfiguriert und einfach beschrieben werden wäre für mich sehr hilfreich (hierzu gibt es ja einen Thread, der jedoch nicht wirklich verständlich ist).

Müssen in die Seiten/ Module die ich schützen möchte noch bestimmter Code für das UMGT oder erfolgt dies lediglich über eine Konfiguration von Sichtbarkeiten und Rechten?

Vielen Dank im Vorraus.

Gruß Kevin

Benutzeravatar
dr.e.
Administrator
Beiträge: 4533
Registriert: 04.11.2007, 16:13:53

Re: UMGT - Zugriffsschutz

Beitrag von dr.e. » 20.10.2014, 16:58:29

Hallo Kevin,

schön dich wieder mal im Forum zu lesen! :)
Das Problem vor dem ich stehe ist, dass ich zum einen den kompletten UMGT Bereich in dem man Zugriff auf Benutzer, Gruppen, Rollen, etc hat mit einem Zugriff schützen möchte.
Das UMGT selbst besitzt keinen eigenen Schutz - das hast du schon korrekt erkannt. Der Schutz für das Modul selbst muss von der Applikation drumherum sichergestellt werden. Bedeutet: der Schutz, den du auch für deine übrigen Seiten/Module erstellst, nutzt du auch für das UMGT. Wichtig dabei ist, dass du eine getrennte Sichtbarkeitsdefinition und/oder Funktions-Berechtigung definierst, dass du dich nicht selbst aussperrst. ;)
Müssen in die Seiten/ Module die ich schützen möchte noch bestimmter Code für das UMGT oder erfolgt dies lediglich über eine Konfiguration von Sichtbarkeiten und Rechten?
Was du brauchst sind Sichtbarkeitsdefinitionen und/oder Funktions-Berechtigungen pro Seite/Modul und in deiner Applikation ein Stück Code, das diese abfragt und auswertet - sprich Inhalte/Module anzeigt oder eben nicht. Details findest du unter http://adventure-php-framework.org/Seit ... chtigungen und http://adventure-php-framework.org/Seit ... chtigungen.

Die Doku ist leider unter http://adventure-php-framework.org/Seit ... chtigungen noch nicht vollständig. Mein Vorschlag ist daher: poste mal ein bisschen Code und beschreibe wie weit du nach dem Anlegen der Sichtbarkeitsdefinitionen und/oder Funktions-Berechtigungen gekommen bist, dann erarbeiten wir das zu sammen und ich poste das in die Doku. Ist das für dich ok?
Viele Grüße,
Christian

Linadillar
Beiträge: 10
Registriert: 28.05.2010, 12:13:41
Wohnort: Baunatal / Kassel

Re: UMGT - Zugriffsschutz

Beitrag von Linadillar » 21.10.2014, 10:14:44

Hallo Christian,

ja ich weiß ist lange lange her, dass ich was von mir hab hören/ lesen lassen.

Danke für deine Erläuterung, jetzt wird es mir klarer wie ich es realisieren muss.
Ich kann zwar mit den Sichtbarkeitsberechtigungen arbeiten jedoch helfen mir diese nichts, wenn ich sie nicht innerhalb meiner Applikation abprüfe. An der Stelle hatte ich wohl einen Knoten im Kopf und habe mir als den Kopf zerbrochen, was denn nun mit Application ID gemeint ist und wie er mit dieser einzelne Module schützen können soll.

Ich werde mal schauen wie weit ich heute komme und dann meinen Code hier platzieren und natürlich können wir dann zusammen etwas erarbeiten und es für die Doku verwenden :)

Vielen Dank schon einmal ;)

Gruß Kevin

Benutzeravatar
dr.e.
Administrator
Beiträge: 4533
Registriert: 04.11.2007, 16:13:53

Re: UMGT - Zugriffsschutz

Beitrag von dr.e. » 21.10.2014, 10:33:58

Alles klar. Wenn du nicht weiter kommst, melde dich einfach. :)
Viele Grüße,
Christian

Linadillar
Beiträge: 10
Registriert: 28.05.2010, 12:13:41
Wohnort: Baunatal / Kassel

Re: UMGT - Zugriffsschutz

Beitrag von Linadillar » 21.10.2014, 11:22:18

Hi,

ich habe mich mal eben an einer Quick-and-Dirty Lösung zu schaffen gemacht.
Bevor ich hier jedoch Code poste möchte ich das ganze ein wenig lesbarer und verständlicher abbilden.

Aber vorab schon einmal wie ich es mir kenzeptionell ausgedacht habe für den Bereich von Sichtbarkeitsgeschützten Seiten.

1. Jede Seite, die einen Sichtbarkeitsschutz erhalten soll wird einen Controller "PermissionController" implementieren
2. Der PermissionController holt an Hand des Seiten-Namens "missbraucht als "AppObjectId" aus der UMGT Datenbank in der Tabelle ent_appproxy die einzelnen Berechtigungen.
2.1 Mit den aus der Datenbank ermittelten Werten prüft der PermissionController nun ob er die Seite ausgeben darf oder nicht.

Soweit für den ersten Step. Natürlich müssen die Beziehungen zwischen Benutzer / Gruppen / Rollen mit abgeprüft werden um das ganze entsprechend runter zu brechen und an die Logik des UMGT anzupassen.

Wäre es so vom Konzept erst einmal korrekt?

Änderung:
Ich hab mir noch einmal weitere Gedanken gemacht. Ich würde es an Hand des Sandbox Beispieles als Extension für das APF bauen, so dass man es immer wieder verwenden kann.
Wie interpretiert ihr die "ID des Application Objektes" korrekt? Ich gehe davon aus, dass ich w.o.g. dieses Feld eher missbraucht habe.

Gruß Kevin

Benutzeravatar
dr.e.
Administrator
Beiträge: 4533
Registriert: 04.11.2007, 16:13:53

Re: UMGT - Zugriffsschutz

Beitrag von dr.e. » 21.10.2014, 15:20:54

Hi Kevin,
Wäre es so vom Konzept erst einmal korrekt?
Gemäß http://adventure-php-framework.org/Seit ... atenmodell passt das aus meiner Sicht sehr gut. Jede Seite stellt im UMGT eine AppProxy dar, dem du jeweils Sichtbarkeitsberechtigungen pro Gruppe und/oder Benutzer zuweisen kannst. AppObjectId referenziert dabei die Seite in deiner Applikation.
1. Jede Seite, die einen Sichtbarkeitsschutz erhalten soll wird einen Controller "PermissionController" implementieren
Ich denke das kannst du generisch implementieren. Im Controller kennst du die Seite an Hand einer URL oder ID und kannst daher vermutlich alle Seiten mit einem Controller abhandeln.
Änderung:
Ich hab mir noch einmal weitere Gedanken gemacht. Ich würde es an Hand des Sandbox Beispieles als Extension für das APF bauen, so dass man es immer wieder verwenden kann.
Gerne doch! Evtl. lässt sich das auch direkt in das UMGT integrieren. Lass uns mal am Ende der Lösung überlegen was mehr Sinn macht. Contributions zum APF sind immer gerne gesehen. :)
Wie interpretiert ihr die "ID des Application Objektes" korrekt? Ich gehe davon aus, dass ich w.o.g. dieses Feld eher missbraucht habe.
Das ist die technische ID (Zahl), die die Instanz deiner Seite in der Applikation referenziert. Beispiel: deine Start-Seite trägt in der Datenbank die ID 1, dann trägst du bei AppObjectId eine 1 ein. Das kannst du sowohl über die GUI des UMGT als auch programmatisch per UmgtManager.

Hoffe das hilft dir weiter.
Viele Grüße,
Christian

dingsda
Beiträge: 49
Registriert: 03.02.2014, 04:00:36

Re: UMGT - Zugriffsschutz

Beitrag von dingsda » 21.10.2014, 15:28:16

hallo,

vielleicht helfen dir auch die taglibs umgtTemplateTag und umgtImportTemplateTag. ich hab leider keine dokumentation dieser tags gefunden aber wenn ich das richtig sehe müsstest du nur dem UserDependentContentConditionSet eine neue Condition hinzufügen, die deinen prüfung macht.

wenn die prüfung positiv ist wird das template geladen oder eben nicht.

die condition könnte z.b. so aussehen

Code: Alles auswählen

class UmgtVisibilityCondition extends UserDependentContentConditionBase implements UserDependentContentCondition {

   public function matches($conditionKey, UmgtUser $user = null) {

      if ($user === null) {
         return false;
      }

      foreach ($this->getVisibiltyDefinitions($user) as $visibiltyDefinition) {
         if (in_array($visibiltyDefinition->getAppObjectId(), $this->getOptions())) {
            return true;
         }
      }

      return false;
   }

   public function getConditionIdentifier() {
      return 'appProxy';
   }

   /**
    * @param UmgtUser $user
    *
    * @return UmgtVisibilityDefinition[]
    */
   private function getVisibiltyDefinitions(UmgtUser $user) {
      $umgt = $this->getDIServiceObject('APF\modules\usermanagement\biz', 'UmgtManager');
      return $umgt->loadAllVisibilityDefinitions($user);

   }

}
 
und im template kannst du das taglib so ungefähr nutzen

Code: Alles auswählen

<umgt:importdesign namespace="..." template="..." condition="appProxy" option="die-id-für-diesen-teil-der-app" />
ich hoffe ich hab das richtig verstanden mit diesen tags. hab wie gesagt keine richtige doku gefunden.

Linadillar
Beiträge: 10
Registriert: 28.05.2010, 12:13:41
Wohnort: Baunatal / Kassel

Re: UMGT - Zugriffsschutz

Beitrag von Linadillar » 22.10.2014, 14:00:11

Hi,
Gemäß http://adventure-php-framework.org/Seit ... atenmodell passt das aus meiner Sicht sehr gut. Jede Seite stellt im UMGT eine AppProxy dar, dem du jeweils Sichtbarkeitsberechtigungen pro Gruppe und/oder Benutzer zuweisen kannst. AppObjectId referenziert dabei die Seite in deiner Applikation.
Dann haben wir das selbe Verständnis von dem wie es funktioniert.
Ich denke das kannst du generisch implementieren. Im Controller kennst du die Seite an Hand einer URL oder ID und kannst daher vermutlich alle Seiten mit einem Controller abhandeln.
Das war mein Vorhaben. Jedoch tue ich mich ab und zu noch schwer damit, welche Klassen ich mit einbinde und welche ich per extend erweitere. Naja wird aber schon werden.
Gerne doch! Evtl. lässt sich das auch direkt in das UMGT integrieren. Lass uns mal am Ende der Lösung überlegen was mehr Sinn macht. Contributions zum APF sind immer gerne gesehen. :)
Perfekt! Dann machen wir es so :)
Das ist die technische ID (Zahl), die die Instanz deiner Seite in der Applikation referenziert. Beispiel: deine Start-Seite trägt in der Datenbank die ID 1, dann trägst du bei AppObjectId eine 1 ein. Das kannst du sowohl über die GUI des UMGT als auch programmatisch per UmgtManager.
Danke für die Erläuterung, soweit hab ich es jetzt verstanden.

@dingsda: Danke für den Tipp. Werde ich mir entsprechend mit ansehen und schauen wie und ob ich es verwende.

Woran ich gerade noch ein wenig scheitere, ist den aktuell angemeldeten Benutzer vom UMGT zurück zubekommen.

Ich halte euch dann weiterhin auf dem Laufenden.

Vielen Dank

Linadillar
Beiträge: 10
Registriert: 28.05.2010, 12:13:41
Wohnort: Baunatal / Kassel

Re: UMGT - Zugriffsschutz

Beitrag von Linadillar » 14.11.2014, 11:22:51

Hallo zusammen,

nach dem ich mir jetzt einige Tage (so wie es die zeit zu ließ) die Birne zerbrochen habe wegen dem Zugriffsschutz, habe ich so eben durch Zufall entdeckt, dass so etwas im APFelSMS bereits implementiert ist.
Ich werde dann mal schauen, in wie weit ich das logisch verstehe und als eigenständige Extension ausgliedern kann.

Ich bin mal so frei und werde bei Fragen hier auf euch alle zukommen :)

Grüße Kevin

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast