Web Authentication Service Schnittstelle

Der Web Authentication Service (WAS) ist für die Authentifizierung von Nutzern und das Ausstellen von SAML Tickets verantwortlich. Folgende Parameter werden über die HTTP-GET-Schnittstelle des WAS erwartet.

Anfrageparameter Erforderlich/ Optional Beschreibung

VERSION=1.1

E

Versionsparameter, der Wert muss 1.1 sein.

REQUEST=GetSAMLResponse

E

Operationsname, der Wert muss GetSAMLResponse sein.

METHOD=<authnmethod-urn>

E

Authentifizierungsmethode, diese gibt vor welcher Wert im CREDENTIALS Parameter erwartet wird.

CREDENTIALS=<credential>

E

Die Authentifizierungs-informationen des Nutzers, codiert wie durch die Authentifizierungsmethode gefordert.

ANONYMOUS=true|false

O

Flag ob ein Ticket für einen anonymen Nutzer ausgestellt werden soll.

RETURNFORMAT=<format>

O

Gibt das Format vor, das vom WAS zurückgegeben werden soll. Standardmäßig wird immer ein samlp:Response Element erzeugt. Setzt man RETURNFORMAT=ASSERTION, wird nur das saml:Assertion Element ausgeliefert.

Folgende Authentifizierungsmethoden (METHOD) werden unterstützt:

urn:opengeospatial:authNMethod:OWS:1.0:password

Passwortauthentifizierung. Hierbei muss der CREDENTIALS Parameter den Nutzernamen und nachfolgend das Passwort als Base64-kodiertes kommasepariertes Paar enthalten.

Beispiel: CREDENTIALS=dGVzdA==,dGVzdA==

urn:opengeospatial:authNMethod:OWS:1.0:samlresponse

Bezeichnet die SAML-Ticket Authentifizierung. Hierbei muss der CREDENTIALS Parameter ein gültiges base64 codiertes samlp:Response oder saml:Assertion Element beinhalten, wie es vom WAS ausgestellt wird.

Diese Methode kann z.B. zur Ticketerneuerung (vor dem Ablauf der Gültigkeit eines Tickets verwendet werden).

Die oben beschriebenen Parameter können einfach an den Link http(s)://[HOST]/administration/WAS als URL Parameter angehängt werden, d.h. der Aufruf erfolgt per HTTP-GET.

http://localhost:8080/administration/WAS?VERSION=1.1&REQUEST=GetSAMLResponse&METHOD=urn:opengeospatial:authNMethod:OWS:1.0:password&CREDENTIALS=dGVzdA==,dGVzdA==
Beispiel einer anonymen Anfrage
http://localhost:8080/administration/WAS?VERSION=1.1&REQUEST=GetSAMLResponse&METHOD=urn:opengeospatial:authNMethod:OWS:1.0:password&ANONYMOUS=TRUE&CREDENTIALS=

Das Ergebnis einer WAS-Authentifizierung ist ein base64 codiertes samlp:Response Element. Wird dieses Ticket dekodiert, sieht es z.B. wie folgt aus:

<Response xmlns="urn:oasis:names:tc:SAML:1.0:protocol" xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion" xmlns:samlp="urn:oasis:names:tc:SAML:1.0:protocol" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" IssueInstant="2010-02-12T10:42:35.765Z" MajorVersion="1" MinorVersion="1" ResponseID="_84902b97cd7c2f66beeed4500dc475a1">
    <Status>
        <StatusCode Value="samlp:Success"/>
    </Status>
    <Assertion xmlns="urn:oasis:names:tc:SAML:1.0:assertion" AssertionID="_040bf74af75f3d3456aa88bacc19742c" IssueInstant="2010-02-12T10:42:35.765Z" Issuer="ct-security" MajorVersion="1" MinorVersion="1">
        <Conditions NotBefore="2010-02-12T10:42:35.280Z" NotOnOrAfter="2010-02-12T11:42:35.280Z"/>
        <AuthenticationStatement AuthenticationInstant="2010-02-12T10:42:35.280Z" AuthenticationMethod="urn:oasis:names:tc:SAML:1.0:am:password">
            <Subject>
                <NameIdentifier Format="urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified">anonymous-946d7e7b-c176-4945-b54b-822e34101514</NameIdentifier>
            </Subject>
        </AuthenticationStatement>
        <AttributeStatement>
            <Subject>
                <NameIdentifier Format="urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified">anonymous-946d7e7b-c176-4945-b54b-822e34101514</NameIdentifier>
            </Subject>
            <Attribute AttributeName="gender" AttributeNamespace="urn:ct:names">
                <AttributeValue xsi:type="xsd:string">M</AttributeValue>
            </Attribute>
            <Attribute AttributeName="urn:conterra:names:sdi-suite:policy:attribute:group-name" AttributeNamespace="urn:ct:names">
                <AttributeValue xsi:type="xsd:string">Gast</AttributeValue>
            </Attribute>
            <Attribute AttributeName="urn:conterra:names:sdi-suite:policy:attribute:user-id" AttributeNamespace="urn:ct:names">
                <AttributeValue xsi:type="xsd:string">2</AttributeValue>
            </Attribute>
            <Attribute AttributeName="urn:conterra:names:sdi-suite:policy:attribute:group-id" AttributeNamespace="urn:ct:names">
                <AttributeValue xsi:type="xsd:string">2</AttributeValue>
            </Attribute>
            <Attribute AttributeName="mail" AttributeNamespace="urn:ct:names">
                <AttributeValue xsi:type="xsd:string">t.test@example.com</AttributeValue>
            </Attribute>
            <Attribute AttributeName="urn:conterra:names:sdi-suite:policy:attribute:role" AttributeNamespace="urn:ct:names">
                <AttributeValue xsi:type="xsd:string">gast</AttributeValue>
            </Attribute>
        </AttributeStatement>
        <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">..</ds:Signature>
    </Assertion>
</Response>