1 Norm 410 Security Token Service 2 3 Release und Version Release 1, Version 1.0, vom 19. Juni 2007 4 5 Status Offizielle Norm 6 7 Editor Dr. Thomas Kippenberg, NÜRNBERGER 8 9 10 11 12 13 14 Autoren Dr. Dieter Ackermann, VOLKSWOHL BUND (dieter.ackermann@volkswohl-bund.de) Dr. Günther vom Hofe, Continentale (guenter.vomhofe@continentale.de) Dr. Thomas Kippenberg, NÜRNBERGER (thomas.kippenberg@nuernberger.de) Dr. Torsten Schmale, inubit AG (ts@inubit.com) Sören Chittka, VOLKSWOHL BUND, (soeren.chittka@volkswohl-bund.de) Carsten Baehr, VOLKSWOHL BUND, (carsten.baehr@volkswohl-bund.de) 15 16 17 Gegenstand der Norm Die vorliegende Norm 410 definiert die Schnittstelle zur Implementierung eines Security- Token-Services (STS). 18 19 Voraussetzung Norm 225 Release 1 Version 2 20 Norm 260 Release 1 Version 4 21 Norm 270 Release 1 Version 1 22 - Seite 1 von 10 -
23 24 25 26 27 28 29 30 Hinweis zur Veröffentlichung Die anliegend überreichte Norm ist urheberrechtlich für die BiPRO geschützt. Das Dokument wird Ihnen im Rahmen Ihrer Mitgliedschaft bei der BiPRO und damit als Mitglied dieses geschlossenen Empfängerkreises überlassen. Dementsprechend stellt die Überlassung an Sie keine Erstveröffentlichung der Norm dar. Zur Erstveröffentlichung gegenüber Dritten bleibt somit die BiPRO alleine berechtigt. Die Veröffentlichung erfolgt gemäß Norm100. Aufgrund der besonderen Wertigkeit der Normen für die Mitglieder sind wir gehalten, Verstöße gerichtlich zu ahnden. 31 - Seite 2 von 10 -
32 Inhaltsverzeichnis 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 Norm 410 Security Token Service... 1 Inhaltsverzeichnis... 3 Einführung... 4 Verwendete Standards... 4 Abgrenzung... 4 Spezifikation... 5 Template Definition... 5 WSDL-Template für einen Security-Token-Service (STS)... 5 wsdl:definitions... 5 wsp:policies... 6 wsdl:types... 6 wsdl:message... 6 wsdl:porttype... 6 wsdl:binding... 8 wsdl:service... 8 wsdl:port... 9 49 - Seite 3 von 10 -
50 Einführung 51 52 53 Verwendete Standards Grundlage des in dieser Norm spezifizierten Security-Token-Services (STS) sind die folgenden OASIS Spezifikationen. 54 55 56 57 58 59 60 WS-Security (Version 1.1) Sicherheitsframework für WebServices WS-Trust (Februar 2005) Definition von Security-Token-Services WS-SecureConversation (Februar 2005) Abwicklung sicherer Sessions WS-SecurityPolicies (Juli 2005) Definition der Sicherheitsanforderungen WS-Trust definiert einen Security-Token-Service und WS-SecureConversation das Verfahren, wie ein Sicherheitskontext-Token (Security Context Token) generiert und genutzt wird. Beide Spezifikation sind sehr umfassend und sind explizit als Baustein-System entworfen. 61 62 63 64 Abgrenzung Diese Norm enthält lediglich die detaillierte technische Spezifikation der Schnittstelle eines STS im Sinne von BiPRO. Die Verfahren zur Einbindung des STS sind in Norm 260 beschrieben, die Erstellung von Sicherheitspolicies ist Teil der Norm 270. 65 - Seite 4 von 10 -
66 Spezifikation 67 68 Template Definition Im weiteren Verlauf werden folgende Variablen für Templates verwendet: Variable Wert ${X1} Namespace WS-Trust: http://schemas.xmlsoap.org/ws/2005/02/trust ${X2} Namespace SW-Policy : http://schemas.xmlsoap.org/ws/2004/09/policy 69 70 71 72 73 74 75 76 77 WSDL-Template für einen Security-Token-Service (STS) Die verschiedenen Web-Service-Funktionen, mit denen die von einem Provider im BiPRO- Umfeld angebotenen Authentifizierungsverfahren realisiert werden, MÜSSEN sich nur auf der untersten Ebene der Schnittstellenbeschreibung unterscheiden, nämlich hinsichtlich der Service-Endpoints. Sie lassen sich darum als Kommunikationsschnittstellen ( WSDL-Ports) eines einzigen STS realisieren, dessen WSDL-Beschreibung über drei message-elemente, ein porttype-element, ein binding-element und ein service-element mit mehreren port- Elementen verfügt. Im Folgenden wird ein Template für eine solche WSDL-Beschreibung vorgestellt. 78 79 80 81 Jedes Authentifizierungsverfahren in einem eigenen STS zu realisieren ist im Sinne der BiPRO-Normen eine gleichwertige Alternative. Die WSDL-Beschreibungen dieser Services wären dann weitgehend identisch, da sie sich nur in den jeweils einzigen Port-Elementen unterschieden. 82 83 Um eine BiPRO-Konformität sicher zu stellen, MUSS die Beschreibung der STS-Schnittstelle unter Verwendung der allgemeinen Muster für WSDL Templates (siehe Norm 230) erfolgen. 84 85 86 wsdl:definitions Dieses Template definiert den grundlegenden Aufbau der Schnittstellendatei und die rele- vanten Namensräume (siehe Norm 230). - Seite 5 von 10 -
87 88 wsp:policies Das Template zu diesem Abschnitt ist in Norm 270 definiert. 89 90 91 wsdl:types Dieses Template definiert die Objekte und Datentypen, die vom Consumer an den STS oder vom STS an den Consumer übertragen werden können. 92 93 94 95 96 97 98 99 100 101 102 103 104 105 Das Template zu diesem Abschnitt wird analog zur Norm 230 gebildet. Entsprechend der verwendeten Spezifikationen werden mehrere externe Schemata importiert. <wsdl:types> <xsd:schema version="1.0" xmlns="http://www.w3.org/2001/xmlschema" xmlns:xsd="http://www.w3.org/2001/xmlschema"> <xsd:import namespace="${1}" schemalocation="${1}/ws-trust.xsd" /> </xsd:schema> <xsd:schema version="1.0" xmlns="http://www.w3.org/2001/xmlschema" xmlns:xsd="http://www.w3.org/2001/xmlschema"> <xsd:import namespace="${2}" schemalocation="${2}/ws-policy.xsd" /> </xsd:schema> </wsdl:types> 106 107 108 109 110 111 112 113 114 115 116 117 wsdl:message Dieses Template definiert die zwischen Consumer und STS zu übertragenden Daten. Hier erfolgt die Verknüpfung der Schnittstellen-Funktionen mit den in den XML-Schemata des Providers und der WS-Trust-Spezifikation definierten Nachrichten bzw. Objekten. <wsdl:message name="requestsecuritytokenrequest"> <wsdl:part name="parameters" element="wst:requestsecuritytoken"/> </wsdl:message> <wsdl:message name="requestsecuritytokenresponse"> <wsdl:part name="parameters" element="wst:requestsecuritytokenresponse"/> </wsdl:message> Eine Exception Message wird nicht definiert, da das Fehlerhandling entsprechend Norm 260 über SOAPFaults realisiert ist. 118 119 120 wsdl:porttype Dieses Template definiert die Eingangs-, Ausgangs- und Fehlernachrichten, die im Rahmen der STS-Funktion verwendet werden. - Seite 6 von 10 -
121 122 123 124 125 126 127 128 129 <wsdl:porttype name="securitytokenserviceporttype"> <wsdl:operation name="requestsecuritytoken" parameterorder="parameters"> <wsdl:documentation>${3}</wsdl:documentation> <wsdl:input message="bipro:requestsecuritytokenrequest" name="requestsecuritytokenrequest"/> <wsdl:output message="bipro:requestsecuritytokenresponse" name="requestsecuritytokenresponse"/> </wsdl:operation> </wsdl:porttype> 130 Variable Wert ${3} Dokumentation der STS-Funktion. ACHTUNG: Diese fachliche Erläuterung wird möglicherweise innerhalb eines generischen Clients innerhalb der Benutzeroberfläche visualisiert. 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 Beispiel <wsdl:porttype name="securitytokenserviceporttype"> <wsdl:operation name="requestsecuritytoken" parameterorder="parameters"> <wsdl:documentation> Dieser Service gibt nach erfolgreicher Authentifizierung ein Security Token (Security Context Token) zurueck. Die Authentifizierung kann dabei entweder mit Benutzername und Passwort oder mit einem VDG-Ticket erfolgen. </wsdl:documentation> <wsdl:input message="bipro:requestsecuritytokenrequest" name="requestsecuritytokenrequest"/> <wsdl:output message="bipro:requestsecuritytokenresponse" name="requestsecuritytokenresponse"/> </wsdl:operation> </wsdl:porttype> 146 - Seite 7 von 10 -
147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 wsdl:binding Dieses Template bestimmt das konkrete Protokoll und die Art der Nachrichtenübertragung innerhalb der einzelnen Funktionen. <wsdl:binding name="securitytokenservicebinding" type="bipro:securitytokenserviceporttype"> <soapbind:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <wsp:policyreference URI="#${4}" /> <wsdl:operation name="requestsecuritytoken"> <soapbind:operation soapaction="urn:requestsecuritytoken" style="document"/> <wsdl:input name="requestsecuritytokenrequest"> <soapbind:body use="literal"/> </wsdl:input> <wsdl:output name="requestsecuritytokenresponse"> <soapbind:body use="literal"/> </wsdl:output> </wsdl:operation> </wsdl:binding> Variable Wert ${X4} Id der zugehörigen SecurityPolicy 167 168 169 170 171 172 173 174 175 176 177 wsdl:service Dieses Template fasst eine Reihe unterschiedlicher Kommunikationsschnittstellen (Service- Endpoints) in einem Service zusammen. Die Ports sind gewissermaßen Instanzen des PortTypes. <wsdl:service name="securitytokenservice"> <wsdl:documentation>${x5}</wsdl:documentation> <wsdl:port>${x6}</wsdl:port> <wsdl:port>${x6}</wsdl:port> <wsdl:port>...</wsdl:port> </wsdl:service> 178 - Seite 8 von 10 -
179 Variable Wert ${X5} Erläuterung der Aufgaben des STS; Fachliche Dokumentation. ACHTUNG: Diese Erläuterung wird möglicherweise von generischen Clients in einer Benutzeroberfläche visualisiert. ${X6} Template gemäß folgendem Abschnitt wsdl:port 180 181 182 183 184 185 186 187 wsdl:port Dieses Template beschreibt eine einzelne Kommunikationsschnittstelle (Service-Endpoint), die zum STS gehört. Jede solche Schnittstelle entspricht einem Authentifizierungsverfahren, das der Provider anbietet. <wsdl:port name="${6}" binding="bipro:securitytokenservicebinding"> <wsdl:documentation>${x7}</wsdl:documentation> <soapbind:address location="${x8}"/> </wsdl:port> 188 Variable Wert ${6} Eindeutige Kennzeichnung des Ports, z. B. UserPasswordLogin ${7} Erläuterung der Aufgabe der Kommunikationsschnittstelle; Fachliche Dokumentation. ACHTUNG: Diese Erläuterung wird möglicherweise von generischen Clients in einer Benutzeroberfläche visualisiert. ${X8} Internet-Adresse des Web Services, z. B. https://host/path/services/userpasswordlogin 189 190 191 192 193 194 Beispiel für ein vollständiges wsdl:service-element <wsdl:service name="securitytokenservice"> <wsdl:documentation> Dieser Service stellt Funktionen fuer die Authentifizierung mit Benutzername und Passwort oder mit einem VDG-Ticket zur Verfuegung. </wsdl:documentation> - Seite 9 von 10 -
195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 <wsdl:port name="userpasswordlogin"binding="bipro:securitytokenservicebinding"> <wsdl:documentation> Diese Funktion erledigt die Authentifizierung mit Benutzername und Passwort. </wsdl:documentation> <soapbind:address location="https://host/path/services/userpasswordlogin"/> </wsdl:port> <wsdl:port name="vdgticketlogin" binding="bipro:securitytokenservicebinding"> <wsdl:documentation> Diese Funktion erledigt die Authentifizierung mit einem VDG-Ticket. </wsdl:documentation> <wsp:policyreference URI="#VDGAuthPolicy"/> <soapbind:address location="https://host/path/services/vdgticketlogin"/> </wsdl:port> </wsdl:service> - Seite 10 von 10 -