Web Authenication Service als Security Token Service

Im Folgenden wird ein Mechanismus beschrieben, wie am WAS ein SAML Ticket für einen bestimmten Nutzer erfragt werden kann, ohne dessen Passwort zu kennen. Dieser Mechanismus ist in Situationen nützlich, in denen ein Nutzer bereits eine Anmeldung durchgeführt hat, jedoch ein SAML Ticket für die Delegation der Identität des Nutzers an ein externes System benötigt wird. Dem delegierenden System ist jedoch nur der Name des Nutzers nicht aber dessen Passwort.

Die im Folgenden beschriebene Methode steht nur Nutzern zur Verfügung, die über das de.conterra.suite.policy.common.usermanagement.adapter.UserManagementLoginModule authentifiziert werden. Dies sind für gewöhnlich alle Nutzer bis auf den „super user".

Für die Abfrage des SAML Tickets wird die Passwort-Authentifizierungsmethode (urn:opengeospatial:authNMethod:OWS:1.0:password) verwendet, allerdings wird das Passwort im CREDENTIALS Parameter mit einem speziellen Wert befüllt. Der normale CREDENTIALS Parameter besteht aus dem Base64-kodierten Nutzernamen und dem Base64-kodierten Passwort des Nutzers, wobei beide Werte kommagetrennt sind. Das Passwort des Nutzers ist jedoch nicht bekannt, daher muss es wie folgt befüllt werden:

Passwort = <issuer-id>|<encrypted-data>
encrypted-data = <issuedate>|<username>

Die issuer-id ist die Kennung des Ausstellers der Anfrage, diese Kennung ist bei einer Standardinstallation der Alias des öffentlichen Zertifikates, welches zur Signierung der SAML Tickets verwendet wird. Kennungen können durch Import von Zertifikaten in den Keystore hinzugefügt werden.

Die Kennung des Ausstellers ist vom encrypted-data Teil durch das Pipesymbol (|) getrennt.

Der encrypted-data Teil besteht aus dem ISO 8601 formatierten Ausstellungsdatum der Anfrage, z.B. 2009-11-17T13:28:17.235Z und dem Nutzernamen, wobei beide Teile durch das Pipesymbol getrennt sind. Der encrypted-data Teil muss durch den zur Ausstellerkennung passenden privaten Schlüssel digital verschlüsselt werden. Die durch die Verschlüsselung erzeugten Bytes müssen Base64-kodiert hinter das Pipesymbol der Ausstellerkennung angefügt werden.

Während des Anmeldungsvorganges entschlüsselt das System den encrypted-data Teil und überprüft die darin enthaltenen Werte auf Korrektheit. Sind Entschlüsselung und Prüfung erfolgreich, wird ein SAML Ticket ausgestellt. Da der Mechanismus auf Private/Public Key-Mechanismen basiert, ist er sicherer als eine normale Passwort-Authentifizierung.