APEX: Einzelne Seiten für APEX-User sperren

Im deutschen Apex-Forum kam diese Woche die Frage auf, wie einzelne Seiten für APEX-User gesperrt werden können.

Ich möchte dies aufgreifen und an einem kleinen Beispiel mit Screenshots erklären.

Der User „User1“ soll hier im Beispiel auf eine bestimmte Seite „NotforUser1“ keinen Zugriff erhalten. Damit diese auch nicht in den Tabs für ihn sichtbar ist, wenden wir das Authorization Scheme auf dem entsprechenden Tab an.

Als Vorarbeit haben wir eine Anwendung mit 2 Seiten, inkl. jeweils einem Tab (Page1 und NotforUser1) und dem Authentication Scheme „Application Express“ erstellt.

Im Bereich der Shared Components wählen wir Authorization Scheme aus (siehe Bild 1):

Authorization1

Dort klicken wir auf „Create“ (siehe Bild 2):

Authorization2 

Die Voreinstellung „From Scratch“ können wir übernehmen und klicken auf „Next“ (siehe Bild 3):

Authorization3

Den Namen des Authorization Schemes können wir frei wählen. Wichtig ist an dieser Stelle der Scheme Type „Value of Item in Expression 1 Does NOT Equal Expression 2“ und die entsprechenden Werte für Expression 1 „APP_USER“ und Expression 2 „USER1“. Nun noch eine Error Message eintragen und das neu erstellte Authorization Scheme kann mit „Apply Changes“ angelegt werden (siehe Bild 4):

Authorization4

Damit der User1 die Seite und damit den Tabreiter nicht sieht, wählen wir in den Shared Components im Bereich „Tabs“ den entsprechenden Tabreiter (hier NotForUser1) aus und bearbeiten dessen Attribute. Im Bereich „Authorization“ brauchen wir nun noch unser neu erstelltes Authorization Scheme auswählen (siehe Bild 5):

Authorization5

UPDATE:Dasselbe Authorization Scheme gehört auch noch in die Security-Attribute der Seite „NotforUser1“.

Und schon ist die Seite „NotforUser1“ für den User1 zum einen nicht sichtbar und auch nicht erreichbar.

Natürlich funktioniert das nur in einem überschaubaren Bereich von wenigen Usern und Berechtigungsstufen sauber. Sollte die Anwendung und der Benutzerkreis wachsen, so ist über eine andere Möglichkeit (z.b. LDAP) nachzudenken.

Dieser Beitrag wurde unter APEX, Oracle veröffentlicht. Setze ein Lesezeichen auf den Permalink.

11 Antworten zu APEX: Einzelne Seiten für APEX-User sperren

  1. Patrick Wolf sagt:

    Hi Carsten,

    ganz wichtig ist, dass das Auhorization Scheme auch der Seite selbst zugewiesen wird (Edit Page Attributes), da ansonst der Benutzer durch eingabe der Page Nummer direkt auf die Seite kommt. Die Tab Zuweisung ist eigentlich nur aus „Usability“ Gruenden notwendig.

    Gruesse
    Patrick

  2. cc13 sagt:

    Hallo Patrick,

    du hast recht, das hatte ich vergessen aufzunehmen.

  3. Michael Oetjen sagt:

    Hallo Carsten,
    ich nutze die Version Application Express 4.0.2.00.07 und verzweifle langsam an der Authorisierungserstellung. Dein Beispiel oben funktioniert in dieser Version einfach nicht.
    Welche Fehler bei der Erstellung sind noch möglich ?
    besten Gruß

    Michael

  4. cc13 sagt:

    Hallo Michael,

    kannst du vielleicht näher beschreiben, wo es bei dir klemmpt? Dann kann ich es in meiner Installation nachverfolgen.

  5. cc13 sagt:

    Hallo Michael,

    ich habe es gerade nochmal selber probiert. Die gleiche Apex-Version wie bei dir und genau nach dem Blogeintrag. Es funktioniert. Also hast du dich irgendwo vertan.

  6. Michael Oetjen sagt:

    Hallo Carsten,
    danke für Deine Antwort. Ich nutze die Appliance (siehe OTN Seite). Da diese große Probleme bzgl. der Darstellung von Umlauten hatte, habe ich die APEX multilang. Variante dort neu installiert. Es funktioniert alles perfekt, bis auf die Authorisierungserstellung. Ich habe die Lösung der Beispielanwendung übernommen, sie basiert auf einem Custom Scheme (User/Password in einer Tabelle). Damit habe ich es hinbekommen. :-()
    besten Gruß
    Michael

  7. Patrick Walter sagt:

    Wie lässt sich das mit den Expressions in der aktuellen Version Application Express 4.2.0.00.22 realisieren?
    Expression 2 gibt es nicht zur Auswahl?

  8. cc13 sagt:

    Hallo Patrick,

    ich habe mir die neue Version noch gar nicht genau angeschaut. Das werde ich am Wochenende mal nachholen und dir dann Feedback geben.

    Carsten

  9. Klaus Barthels sagt:

    Wenn ein User sich mittels LDAP autorisiert, so erscheint auf der HTML-Seite „Willkommen L10420“ (Anmeldename).
    Ich will diese Info für die Sperrung bestimmter Funktionen verwenden.
    Mein Problem ist, wie kann ich den User auslesen?
    Meine Suche blieb bis jetzt erfolglos.

  10. cc13 sagt:

    Meinst du die Variable :APP_USER? Darin ist der aktuell angemeldete User enthalten.

  11. Klaus Barthels sagt:

    Genau.
    Vielen Dank für den Tipp.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert