Es können angepasste Varianten des LOAD_USER
Skript erstellt werden. Damit kann u.A. Folgendes erreicht
werden:
Aufgrund der vom IdP gelieferten Benutzerattribute (z.B. Name, Vorname, EMail oder Rolle), können unterschiedliche GeoShop Benutzer Templates geladen werden.
Es können Benutzer zurückgewiesen werden, weil sie sich in einer lokalen Sperrliste befinden.
Benutzer welche lange inaktiv waren, können automatisch gesperrt werden.
etc.
Nachfolgend ein Beispiel für einen sehr einfachen Login Skript:
! saml.lib MUSS immer eingebunden werden !!! |INCL \script\saml.lib 'saml_template.usr' => VAR.TEMPLATE_USER IF OPT.user_dir . '\users\' . VAR.TEMPLATE_USER SERIAL.LOAD_OBJECT THEN => VAR.USER OPT.output &VAR.USER SERIAL.SAVE_OBJECT ELSE 'Der Template Benutzer ' . VAR.TEMPLATE_USER . ' existiert nicht' => VAR.MESSAGE VAR.MESSAGE SAML_APPEND_LOG VAR.MESSAGE SAML_SEND_ERROR END_IF
Folgende Bemerkungen zum Skript:
Der Login Skript muss die
Bibliothek
\script\saml.lib
einbinden. In
der damit automatisch aufgerufenen Prozedur
SAML_INITIALIZE
wird geprüft, ob der Skript
via eine korrekt signierte SAML Meldung vom IdP ausgelöst
wurde. Dieser Test ist sehr wichtig,
saml.lib
muss daher
immer im Login Skript eingebunden werden, selbst wenn keine
weitere Prozedur aus saml.lib
benötigt
wird.
Der Skript lädt den Template Benutzer
\users\saml_template.usr
mit
SERIAL.LOAD_OBJECT
. Der Benutzer
saml_template
ist mit den gewünschten
GeoShop Berechtigungen konfiguriert (z.B. Produkte, Views,
etc.).
Der Skript speichert den saml_template
Benutzer unter OPT.output
. Der GeoShop liest
danach die generierte Benutzerdatei und führt den Login
durch.
Falls das Benutzer Template
saml_template.usr
nicht gefunden wird,
wird dem im GeoShop Client Benutzer mit
SAML_SEND_ERROR
eine Fehlermeldung
angezeigt. Zusätzlich kann mit
SAML_APPEND_LOG
eine Meldung in die Logdatei
\data\logs\samllogs\samllogin.log
geschrieben werden.
Das obige Beispiel ist wie bereits erwähnt sehr einfach.
Zusammen mit der Map SAML_ATTRIBUTES
können im
Skript zusätzlich die vom IdP gelieferten Attribute abgefragt werden.
Damit ist es möglich abhängig von den Attributwerten unterschiedliche
Benutzertemplates zu laden (z.B. abhängig vom Attribut
role
). Ausserdem können die Attributwerte dazu
verwendet werden, den aus dem Template generierten Benutzer mit
zusätzlichen Informationen zu ergänzen (z.B. Name, Vorname, EMail,
etc.).