WS 2007 Federation HTTP Binding
Het WS2007FederationHttp-voorbeeld demonstreert het gebruik van WS2007FederationHttpBinding, een standaardbinding die u kunt gebruiken om federatieve scenario's te bouwen die ondersteuning bieden voor versie 1.3 van de WS-Trust-specificatie.
Notitie
De installatieprocedure en build-instructies voor dit voorbeeld bevinden zich aan het einde van dit onderwerp.
Het voorbeeld bestaat uit een clientprogramma op basis van een console (Client.exe), een serviceprogramma voor beveiligingstokens op basis van een console (Securitytokenservice.exe) en een consoleserviceprogramma (Service.exe). De service implementeert een contract dat een aanvraag-/antwoordcommunicatiepatroon definieert. Het contract wordt gedefinieerd door de ICalculator
interface, waarmee wiskundige bewerkingen (Add
, Subtract
, Multiply
en ) worden Divide
weergegeven. De client verkrijgt een beveiligingstoken van de Security Token Service (STS) en verzendt synchrone aanvragen naar de service voor een bepaalde wiskundige bewerking. De service reageert vervolgens met het resultaat. Clientactiviteit is zichtbaar in het consolevenster.
Het voorbeeld maakt het ICalculator
contract beschikbaar met behulp van het ws2007FederationHttpBinding
element. De configuratie van deze binding op de client wordt weergegeven in de volgende code:
<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 ="http://localhost:8000/sts/windows"
binding ="ws2007HttpBinding" />
</message>
</security>
</binding>
</ws2007FederationHttpBinding>
</bindings>
Op de <beveiliging> geeft de security
waarde aan welke beveiligingsmodus moet worden gebruikt. In dit voorbeeld message
wordt beveiliging gebruikt. Daarom wordt het <bericht> binnen de <beveiliging> opgegeven. Het <verlener-element> in het <bericht> geeft het adres en de binding voor de STS op die een beveiligingstoken aan de client uitgeven, zodat de client kan worden geverifieerd bij de ICalculator
service.
De configuratie van deze binding voor de service wordt weergegeven in de volgende code:
<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 ="http://localhost:8000/sts/mex" >
<identity>
<certificateReference storeLocation ="CurrentUser"
storeName="TrustedPeople"
x509FindType ="FindBySubjectDistinguishedName"
findValue ="CN=STS" />
</identity>
</issuerMetadata>
</message>
</security>
</binding>
</ws2007FederationHttpBinding>
</bindings>
Op de <beveiliging> geeft de security
waarde aan welke beveiligingsmodus moet worden gebruikt. In dit voorbeeld message
wordt beveiliging gebruikt. Daarom wordt het <bericht> binnen de <beveiliging> opgegeven. Het <element issuerMetadata> van binnen het <bericht> geeft het adres en de identiteit op voor een eindpunt dat kan worden gebruikt voor het ophalen van ws2007FederationHttpBinding
metagegevens voor de STS.
Het gedrag voor de service wordt weergegeven in de volgende code:
<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>
Met <de uitgegevenTokenAuthentication>> kan de service beperkingen opgeven voor de tokens waarmee clients tijdens de verificatie kunnen presenteren. Deze configuratie geeft aan dat tokens die zijn ondertekend door een certificaat waarvan de onderwerpnaam CN=STS is, door de service worden geaccepteerd.
STS maakt één eindpunt beschikbaar met behulp van de standaard WS2007HttpBinding. De service reageert op aanvragen van clients voor tokens. Als de client wordt geverifieerd met behulp van een Windows-account, geeft de service een token uit dat de gebruikersnaam van de client als claim bevat. Als onderdeel van het maken van het token ondertekent STS het token met behulp van de persoonlijke sleutel die is gekoppeld aan het CN=STS-certificaat. Daarnaast wordt er een symmetrische sleutel gemaakt en versleuteld met behulp van de openbare sleutel die is gekoppeld aan het CN=localhost-certificaat. Bij het retourneren van het token aan de client retourneert STS ook de symmetrische sleutel. De client presenteert het uitgegeven token aan de ICalculator
service en bewijst dat deze de symmetrische sleutel kent door het bericht met die sleutel te ondertekenen.
Wanneer u het voorbeeld uitvoert, wordt de aanvraag voor het beveiligingstoken weergegeven in het STS-consolevenster. De aanvragen en antwoorden van de bewerking worden weergegeven in de client- en serviceconsolevensters. Druk op Enter in een van de consolevensters om de toepassing af te sluiten.
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.
Met het Setup.bat-bestand in dit voorbeeld kunt u de server en STS configureren met de relevante certificaten om een zelf-hostende toepassing uit te voeren. Het batchbestand maakt twee certificaten in het certificaatarchief LocalMachine/Trusted Mensen. Het eerste certificaat heeft een onderwerpnaam van CN=STS en wordt door STS gebruikt om de beveiligingstokens te ondertekenen die aan de client worden opgegeven. Het tweede certificaat heeft een onderwerpnaam van CN=localhost en wordt door STS gebruikt om een sleutel te versleutelen op een manier die de service kan ontsleutelen.
Het voorbeeld instellen, compileren en uitvoeren
Zorg ervoor dat u de eenmalige installatieprocedure voor de Windows Communication Foundation-voorbeelden hebt uitgevoerd.
Open een opdrachtprompt voor Ontwikkelaars voor Visual Studio met beheerdersbevoegdheden en voer het Setup.bat-bestand uit om de vereiste certificaten te maken.
Dit batchbestand maakt gebruik van Certmgr.exe en Makecert.exe, die worden gedistribueerd met de Windows SDK. U moet echter Setup.bat uitvoeren vanuit een Visual Studio-opdrachtprompt om het script in te schakelen om deze hulpprogramma's te vinden.
Als u de C# of Visual Basic .NET-editie van de oplossing wilt bouwen, volgt u de instructies in het bouwen van de Windows Communication Foundation-voorbeelden.
Als u het voorbeeld wilt uitvoeren in een configuratie van één of meerdere computers, volgt u de instructies in Het uitvoeren van de Windows Communication Foundation-voorbeelden. Als u Windows Vista gebruikt, moet u Service.exe, Client.exe en SecurityTokenService.exe met verhoogde bevoegdheden uitvoeren (klik met de rechtermuisknop op de bestanden en klik vervolgens op Als administrator uitvoeren).