Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
L'esempio WS2007FederationHttp illustra l'uso di WS2007FederationHttpBinding, un'associazione standard che è possibile usare per compilare scenari federati che supportano la versione 1.3 della specifica WS-Trust.
Annotazioni
La procedura di installazione e le istruzioni di compilazione per questo esempio si trovano alla fine di questo argomento.
L'esempio è costituito da un programma client basato su console (Client.exe), da un programma del servizio token di sicurezza basato su console (Securitytokenservice.exe) e da un programma di servizio basato su console (Service.exe). Il servizio implementa un contratto che definisce un modello di comunicazione request/reply. Il contratto è definito dall'interfaccia ICalculator , che espone operazioni matematiche (Add, Subtract, Multiplye Divide). Il client ottiene un token di sicurezza dal servizio token di sicurezza (STS) e effettua richieste sincrone al servizio per una determinata operazione matematica. Il servizio risponde quindi con il risultato. L'attività del client è visibile nella finestra della console.
L'esempio rende disponibile il ICalculator contratto usando l'elemento ws2007FederationHttpBinding . La configurazione di questa associazione nel client è illustrata nel codice seguente:
<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>
Per la <sicurezza>, il security valore specifica la modalità di sicurezza da usare. In questo esempio, message viene usato per la sicurezza, motivo per cui il <messaggio> viene specificato all'interno della <sicurezza>. L'elemento <issuer> all'interno del <messaggio> specifica l'indirizzo e il binding per l'STS che rilascia un token di sicurezza al client in modo che il client possa autenticarsi al ICalculator servizio.
La configurazione di questa associazione nel servizio è illustrata nel codice seguente:
<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>
Per la <sicurezza>, il security valore specifica la modalità di sicurezza da usare. In questo esempio, message viene usato per la sicurezza, motivo per cui il <messaggio> viene specificato all'interno della <sicurezza>. L'elemento <issuerMetadata> di ws2007FederationHttpBinding all'interno del <messaggio> specifica l'indirizzo e l'identificazione per un endpoint che può essere usato per recuperare i metadati per il Security Token Service.
Il comportamento per il servizio è illustrato nel codice seguente:
<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>
Il metodo< issuedTokenAuthentication>> consente al servizio di specificare vincoli sui token che i client possono presentare durante l'autenticazione. Questa configurazione specifica che i token firmati da un certificato il cui nome soggetto è CN=STS vengono accettati dal servizio.
STS rende disponibile un singolo endpoint utilizzando lo standard WS2007HttpBinding. Il servizio risponde alle richieste dei client per i token. Se il client viene autenticato usando un account Di Windows, il servizio rilascia un token che contiene il nome utente del client come attestazione. Durante la creazione del token, STS firma il token usando la chiave privata associata al certificato CN=STS. Crea inoltre una chiave simmetrica e la crittografa usando la chiave pubblica associata al certificato CN=localhost. Nel restituire il token al client, l'STS restituisce anche la chiave simmetrica. Il client presenta il token rilasciato al ICalculator servizio e dimostra che conosce la chiave simmetrica firmando il messaggio con tale chiave.
Quando si esegue l'esempio, la richiesta per il token di sicurezza viene visualizzata nella finestra della console sts. Le richieste e le risposte dell'operazione vengono visualizzate nelle finestre della console client e del servizio. Premere INVIO in una delle finestre della console per arrestare l'applicazione.
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.
Il fileSetup.bat incluso in questo esempio consente di configurare il server e lo STS con i certificati pertinenti per gestire un'applicazione self-hosted. Il file batch crea due certificati nell'archivio certificati LocalMachine/TrustedPeople. Il primo certificato ha un nome del soggetto CN=STS ed è utilizzato da STS per firmare i token di sicurezza che emette al client. Il secondo certificato ha un nome soggetto CN=localhost e viene usato da STS per crittografare una chiave in modo che il servizio possa decrittografare.
Per configurare, compilare ed eseguire l'esempio
Assicurati di aver eseguito la procedura di installazione di One-Time per gli esempi di Windows Communication Foundation.
Aprire un prompt dei comandi per gli sviluppatori per Visual Studio con privilegi di amministratore ed eseguire il file Setup.bat per creare i certificati necessari.
Questo file batch usa Certmgr.exe e Makecert.exe, che vengono distribuiti con Windows SDK. Tuttavia, è necessario eseguire Setup.bat da un prompt dei comandi di Visual Studio per consentire allo script di trovare questi strumenti.
Per compilare l'edizione C# o Visual Basic .NET della soluzione, seguire le istruzioni in Compilazione degli esempi di Windows Communication Foundation.
Per eseguire l'esempio in un solo computer o tra computer diversi, seguire le istruzioni in Esecuzione degli esempi di Windows Communication Foundation. Se si usa Windows Vista, è necessario eseguire Service.exe, Client.exee SecurityTokenService.exe con privilegi elevati (fare clic con il pulsante destro del mouse sui file e quindi scegliere Esegui come amministratore).