|
APEX-Authentifizierung mal anders: Benutzer für einzelne Applikationen freischalten
Wenn die in Application Express eingebaute Benutzerverwaltung als Authentifizierungsschema
verwendet wird, kann sich jeder Nutzer
eines Workspace an allen Applikationen eben dieses
Workspace anmelden. Befinden sich mehrere Applikationen in einem Workspace, so wünscht man
sich gelegentlich, dass man bestimmte Nutzer gezielt für einzelne Applikationen freischalten kann. Auf den
ersten Blick geht das nicht - die APEX-Benutzerverwaltung kennt keine Eigenschaft, in welche
man freigeschaltete Applikationen eintragen könnte. Mit ein wenig Programmierung und einer
Tabelle geht es aber doch ...
Modell für Zugriffsprivilegien: "m" Nutzer können "n" Anwendungen nutzen
Erzeugen Sie sich zunächst im SQL Workshop
eine Tabelle für die Speicherung der
Zuordnungen zwischen Nutzer und Applikation. Sie können die Tabelle entweder mit
dem Assistenten oder direkt per SQL einrichten. Das folgende SQL zeigt die "Minimalausstattung";
weitere Spalten für Bemerkungen, Zeitstempel oder andere Dinge sind natürlich
problemlos zusätzlich möglich:
Der Trigger tr_validate_apex_user_and_app stellt
sicher, dass nur existierende Nutzernamen und Applikations-IDs eingetragen
werden können. Füllen Sie die Tabelle nun mit ein paar Datensätzen (legen Sie sich bei Bedarf
zunächst einige Nutzerkonten an). Nutzen Sie zunächst den SQL Workshop zum
Füllen der Tabelle - natürlich können Sie auch eine eigene Anwendung mit einem Formular zur
"Administration" der Tabelle erzeugen.
Erstellen Sie als nächstes die PL/SQL-Funktion zur Prüfung der Anmeldung eines Nutzers. Diese Funktion
muss (ebenso wie das eingebaute APEX-Authentifizierungsschema) Username und Passwort
prüfen und zusätzlich anhand der soeben erstellten Tabelle feststellen, ob der Nutzer
diese Applikation überhaupt nutzen darf.
Erzeugen Sie nun das Authentifizierungsschema, welches diese Tabelle nutzt. Navigieren Sie
dazu zu den Gemeinsamen Komponenten und dort zu den
Authentifizierungsschemas. Mit Klick
auf die Schaltfläche Erstellen erzeugen
Sie ein neues Authentifizierungsschema. Erstellen Sie es völlig neu.
Abbildung 1: Authentifizierungschema erstellen: Völlig neu!
Geben Sie Ihrem Authentifizierungsschema einen Namen
und evtl. eine erklärende Beschreibung.
Abbildung 2: Name und Beschreibung für das Authentifizierungschema vergeben
Übernehmen Sie nun bis zur Seite Ungültiges Session-Ziel
die Voreinstellungen.
Als Ungültiges Session-Ziel wählen
Sie eine Seite in dieser Anwendung und
aus der dann erscheinenden Auswahlliste die Seite 101 aus.
Abbildung 3: Login-Seite 101 eintragen
Übernehmen Sie nun wiederum bis zur Authentifizierungsfunktion
die Voreinstellungen.
Dort wählen Sie
Meine benutzerdefinierte Funktion für die Authentifizierung verwenden aus
und tragen Sie die eben erstellte Funktion ein, aber
achten Sie dabei darauf, ein return voranzustellen:
Abbildung 4: Authentifizerungsfunktion hinterlegen
Übernehmen Sie nun wieder bis zur Abmelde-URL die
Voreinstellungen; dort tragen
Sie dann folgende URL ein.
Abbildung 5: Abmelde-URL eintragen
Bestätigen Sie zum Schluß Ihre Angaben und erstellen Sie das Authentifizierungsschema.
Nun müssen Sie es nun für die
Anwendung "aktuell" machen. Klicken Sie dazu auf den Reiter
Aktuelles Element ändern
(Abbildung 6) und wählen Sie das neue Authentifizierungsschema aus (Abbildung 7).
Abbildung 6: Authentifizierungsschema wurde erstellt
Abbildung 7: Neues Authentifizierungsschema als "aktuelles" auswählen
Starten Sie nun die Anwendung. Sie sehen daraufhin die gewohnte Login-Seite. Sie
können sich jedoch nur dann mit einem APEX-Benutzerkonto anmelden, wenn dieser
Nutzername zusammen mit der Applikations-ID in die Tabelle
MY_USERS_APPLICATIONS
eingetragen ist. Ist das nicht der Fall, erscheint nur die Fehlermeldung
Invalid Login Credentials.
Wenn Sie dieses Authentifierungsschema nun in einer anderen
Anwendung (aber im gleichen)
Workspace nutzen möchten, navigieren Sie zunächst zu den
Gemeinsamen Komponenten
der anderen Anwendung, dort zu den
Authentifizierungsschemas und klicken wiederum
auf Erstellen. Sie erstellen das Schema
nun aber nicht völlig neu, sondern
Als Kopie eines vorhandenen Authentifizierungsschemas.
Abbildung 8: Authentifizierungsschema kopieren: Schritt 1
Wählen Sie im nächsten Dialog die Anwendung aus, in der Sie das Schema
vorhin erstellt haben.
Abbildung 9: Anwendung, aus der kopiert werden soll, auswählen
Wählen Sie nun noch die Authentifizierungsschemas aus, die kopiert werden sollen; Sie
können gleichzeitig auch ggfs. abweichende Namen vergeben.
Abbildung 10: Zu kopierende Authentifizierungsschemas auswählen
Legen Sie schließlich (wie vorhin) das kopierte Authentifizierungsschema als
aktuelles Schema fest - damit
reagiert diese Anwendung genauso wie die erste.
Und wenn Sie das Authentifizierungsschema auch noch in einem anderen
Workspace nutzen möchten, können Sie den
Komponenten-Export nutzen. Dieser
befindet sich in den Gemeinsamen Komponenten
rechts (Abbildung 11). Damit
ist es möglich, nur das Authentifizierungsschema zu exportieren und damit
auch nur dieses in einen anderen Workspace zu importieren - achten Sie
jedoch darauf, dass Sie auch die Tabelle
MY_USERS_APPLICATIONS im neuen
Datenbankschema erzeugen und mit Inhalten füllen müssen.
Abbildung 11: Komponenten Export
Das Beispiel kann natürlich noch fortgesetzt werden. Wie zu Beginn schon gesagt,
wäre eine Administrationsanwendung mit Bericht und Formular auf die Tabelle
MY_USERS_APPLICATIONS der nächste Schritt -
dies soll hier jedoch nicht weiter
vertieft werden, da für eine solche Anwendung das gleiche gilt, wie für jede
andere Anwendung auf beliebige Tabellen auch - bei der Erstellung sind Ihrer Phantasie
also keine Grenzen gesetzt.
Zurück zur Community-Seite
|