WS 2007 Federation-HTTP-Bindung
In diesem Beispiel wird die Verwendung von WS2007FederationHttpBinding veranschaulicht. Dabei handelt es sich um eine Standardbindung, mit der Sie verbundene Szenarios erstellen können, die die Version 1.3 der WS-Trust-Spezifikation unterstützen.
Tipp
Zum Erstellen und Ausführen dieses Beispiels muss .NET Framework, Version 3.5 installiert sein. Zum Öffnen des Projekts und der Projektmappendateien ist Visual Studio 2008 erforderlich.
Tipp
Die Setupprozedur und die Erstellungsanweisungen für dieses Beispiel befinden sich am Ende dieses Themas.
Das Beispiel besteht aus einem konsolenbasierten Clientprogramm (Client.exe), einem konsolenbasierten Sicherheitstokendienstprogramm (Securitytokenservice.exe) und einem konsolenbasierten Dienstprogramm (Service.exe). Der Dienst implementiert einen Vertrag, der ein Anforderung-/Antwort-Kommunikationsmuster definiert. Der Vertrag wird durch die ICalculator
-Schnittstelle definiert, die mathematische Operationen (Add
, Subtract
, Multiply
und Divide
) verfügbar macht. Der Client empfängt ein Sicherheitstoken vom Sicherheitstokendienst (STS) und stellt beim Dienst synchrone Anforderungen an eine bestimmte mathematische Operation. Der Dienst antwortet dann mit dem Ergebnis. Die Clientaktivität ist im Konsolenfenster sichtbar.
Im Beispiel wird der ICalculator
-Vertrag mit dem ws2007FederationHttpBinding-Element verfügbar gemacht. Das folgende Codebeispiel zeigt die Konfiguration dieser Bindung auf dem Client.
<bindings>
<ws2007FederationHttpBinding>
<binding name="ServiceFed" >
<security mode ="Message">
<message issuedKeyType ="SymmetricKey"
issuedTokenType ="http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.1#SAMLV1.1" >
<!-- Endpoint address and binding for Security Token Service -->
<issuer address ="https://localhost:8000/sts/windows"
binding ="ws2007HttpBinding" />
</message>
</security>
</binding>
</ws2007FederationHttpBinding>
</bindings>
Im <security> element of <ws2007FederationHttpBinding> legt der security
-Wert fest, welcher Sicherheitsmodus verwendet werden soll. In diesem Beispiel wird die message
-Sicherheit verwendet. Daher wird das <message> element of <ws2007FederationHttpBinding> im <security> element angegeben. Das <issuer>-Element in <message> element of <ws2007FederationHttpBinding> gibt die Adresse und die Bindung für den STS an, der ein Sicherheitstoken an den Client ausgibt, damit der Client beim ICalculator
-Dienst authentifiziert werden kann.
Das folgende Codebeispiel zeigt die Konfiguration dieser Bindung auf dem Dienst.
<bindings>
<ws2007FederationHttpBinding>
<binding name="ServiceFed" >
<security mode ="Message">
<message issuedKeyType ="SymmetricKey"
issuedTokenType ="http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.1#SAMLV1.1" >
<!-- Metadata address for Security Token Service -->
<issuerMetadata address ="https://localhost:8000/sts/mex" >
<identity>
<certificateReference storeLocation ="CurrentUser"
storeName="TrustedPeople"
x509FindType ="FindBySubjectDistinguishedName"
findValue ="CN=STS" />
</identity>
</issuerMetadata>
</message>
</security>
</binding>
</ws2007FederationHttpBinding>
</bindings>
Im <security> element of <ws2007FederationHttpBinding> legt der security
-Wert fest, welcher Sicherheitsmodus verwendet werden soll. In diesem Beispiel wird die message
-Sicherheit verwendet. Daher wird das <message> element of <ws2007FederationHttpBinding> im <security> element angegeben. Das <issuerMetadata>-Element von ws2007FederationHttpBinding in <message> element of <ws2007FederationHttpBinding> gibt die Adresse und Identität für einen Endpunkt an, mit dem Metadaten für den STS abgerufen werden können.
Das Verhalten für den Dienst wird im folgenden Code gezeigt.
<behaviors>
<serviceBehaviors>
<behavior name ="ServiceBehaviour" >
<serviceDebug includeExceptionDetailInFaults ="true"/>
<serviceMetadata httpGetEnabled ="true"/>
<serviceCredentials>
<issuedTokenAuthentication>
<knownCertificates>
<add storeLocation ="LocalMachine"
storeName="TrustedPeople"
x509FindType="FindBySubjectDistinguishedName"
findValue="CN=STS" />
</knownCertificates>
</issuedTokenAuthentication>
<serviceCertificate storeLocation ="LocalMachine"
storeName ="My"
x509FindType ="FindBySubjectDistinguishedName"
findValue ="CN=localhost"/>
</serviceCredentials>
</behavior>
</serviceBehaviors>
</behaviors>
Mit <issuedTokenAuthentication> of <serviceCredentials>> kann der Dienst Einschränkungen für die Token angeben, die Clients bei der Authentifizierung angeben dürfen. In dieser Konfiguration wird angegeben, dass von einem Zertifikat mit dem Ausstellernamen CN=STS signierte Token vom Dienst akzeptiert werden.
STS macht einen einzelnen Endpunkt durch die Standard-WS2007HttpBinding verfügbar. Der Dienst antwortet auf Token-Anforderungen von Clients. Wenn der Client mit einem Windows-Konto authentifiziert ist, gibt der Dienst ein Token aus, das den Benutzernamen des Clients als einen Anspruch enthält. Beim Erstellen des Tokens signiert STS das Token mit dem privaten Schlüssel, der dem CN=STS-Zertifikat zugeordnet ist. Außerdem wird ein symmetrischer Schlüssel erstellt und mit dem öffentlichen Schlüssel verschlüsselt, der dem CN=localhost-Zertifikat zugeordnet ist. Beim Zurückgeben des Tokens an den Client gibt STS auch den symmetrischen Schlüssel zurück. Der Client zeigt dem ICalculator
-Dienst das ausgegebene Token und beweist, dass der symmetrische Schlüssel bekannt ist, indem die Nachricht mit diesem Schlüssel signiert wird.
Wenn Sie das Beispiel ausführen, wird die Anforderung des Sicherheitstokens im STS-Konsolenfenster angezeigt. Die Anforderungen und Antworten des Vorgangs werden im Client- und Dienstkonsolenfenster angezeigt. Drücken Sie die EINGABETASTE in einem der Konsolenfenster, um die Anwendung zu schließen.
Add(100,15.99) = 115.99
Subtract(145,76.54) = 68.46
Multiply(9,81.25) = 731.25
Divide(22,7) = 3.14285714285714
Press <ENTER> to terminate client.
Mit der in diesem Beispiel enthaltenen Datei "Setup.bat" können Sie den Server und STS mit den relevanten Zertifikaten zum Ausführen einer selbst gehosteten Anwendung konfigurieren. Die Batchdatei erstellt zwei Zertifikate im Zertifikatspeicher LocalMachine/TrustedPeople. Der Antragstellername des ersten Zertifikats lautet CN=STS. Dieses Zertifikat wird vom STS zum Signieren des Sicherheitstokens verwendet, das an den Client herausgegeben wird. Der Antragstellername des zweiten Zertifikats lautet CN=localhost. Dieses Zertifikat wird vom STS verwendet, um einen Schlüssel so zu verschlüsseln, dass er vom Dienst entschlüsselt werden kann.
So richten Sie das Beispiel ein, erstellen es und führen es aus
Vergewissern Sie sich, dass Sie Beispiele zum einmaligen Setupverfahren für Windows Communication Foundation ausgeführt haben.
Führen Sie die Datei "Setup.bat" aus, um die erforderlichen Zertifikate zu erstellen.
Tipp
Klicken Sie unter Windows Vista mit der rechten Maustaste auf "Setup.bat", und klicken Sie dann auf Als Administrator ausführen.
Diese Batchdatei verwendet "Certmgr.exe" und "Makecert.exe", die mit dem Windows SDK verteilt werden. Sie müssen "Setup.bat" jedoch aus einer Visual Studio Tools-Eingabeaufforderung heraus ausführen, sodass das Skript diese Tools findet.
- Zum Erstellen der C#- oder Visual Basic .NET-Version der Projektmappe folgen Sie den unter Erstellen der Windows Communication Foundation-Beispiele aufgeführten Anweisungen.
- Wenn Sie das Beispiel in einer Konfiguration mit einem Computer oder computerübergreifend ausführen möchten, folgen Sie den unter Durchführen der Windows Communication Foundation-Beispiele aufgeführten Anweisungen. Wenn Sie mit Windows Vista arbeiten, müssen Sie "Service.exe", "Client.exe" und "SecurityTokenService.exe" mit erweiterten Berechtigungen ausführen. (Klicken Sie dazu mit der rechten Maustaste auf die Dateien und dann auf Als Administrator ausführen.)
Siehe auch
Aufgaben
Send comments about this topic to Microsoft.
© 2007 Microsoft Corporation. All rights reserved.