A. Anpassen des LOAD_USER Skript

Es können angepasste Varianten des LOAD_USER Skript erstellt werden. Damit kann u.A. Folgendes erreicht werden:

1. Einfaches Beispiel (simple.cfg)

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.).