Esempio di federazione
L'esempio di federazione illustra la sicurezza federata.
Dettagli dell'esempio
Windows Communication Foundation (WCF) fornisce supporto per la distribuzione di architetture di sicurezza federate tramite wsFederationHttpBinding
. L'elemento wsFederationHttpBinding
offre un'associazione sicura, affidabile e interoperativa che comporta l'utilizzo di HTTP come meccanismo di trasporto sottostante per la comunicazione request/reply e Text/XML come formato di trasmissione per la codifica. Per altre informazioni sulla federazione in WCF, vedere Federazione.
Lo scenario è costituito da 4 elementi:
Servizio della libreria
Servizio token di protezione della libreria
Servizio token di protezione HomeRealm
Client della libreria
Il servizio della libreria supporta due operazioni, BrowseBooks
e BuyBook
. Consente accesso anonimo all'operazione BrowseBooks
, ma richiede accesso autenticato per l'operazione BuyBooks
. L'autenticazione prende il form di un token pubblicato dal Servizio token di sicurezza della libreria. Il file di configurazione per Servizio della Libreria punta i client al Servizio token di protezione della libreria utilizzando l'wsFederationHttpBinding
.
<wsFederationHttpBinding>
<!-- This is the Service binding for the BuyBooks endpoint. It redirects clients to the BookStore STS -->
<binding name='BuyBookBinding'>
<security mode="Message">
<message>
<issuerMetadata
address='http://localhost/FederationSample/BookStoreSTS/STS.svc/mex' >
<identity>
<dns value ='BookStoreSTS.com'/>
</identity>
</issuerMetadata>
</message>
</security>
</binding>
</wsFederationHttpBinding>
Il servizio token di protezione della libreria richiede quindi che i client si autentichino utilizzando un token pubblicato dal servizio token di protezione HomeRealm. Anche in questo caso, il file di configurazione per il servizio token di protezione della libreria punta i client al servizio token di protezione HomeRealm utilizzando wsFederationHttpBinding
.
<wsFederationHttpBinding>
<!-- This is the binding for the clients requesting tokens from this STS. It redirects clients to the HomeRealm STS -->
<binding name='BookStoreSTSBinding'>
<security mode='Message'>
<message>
<issuerMetadata
address='http://localhost/FederationSample/HomeRealmSTS/STS.svc/mex' >
<identity>
<dns value ='HomeRealmSTS.com' />
</identity>
</issuerMetadata>
</message>
</security>
</binding>
</wsFederationHttpBinding>
La sequenza di eventi quando si accede all'operazione BuyBook
è la seguente:
Il client effettua l'accesso al servizio token di sicurezza HomeRealm utilizzando le credenziali di Windows.
Il servizio token di protezione HomeRealm pubblica un token che può essere utilizzato per accedere al servizio token di protezione della libreria.
Il client accede al servizio token di protezione della libreria utilizzando il token pubblicato dal servizio token di protezione HomeRealm.
Il servizio token di protezione della libreria pubblica un token che può essere utilizzato per accedere al servizio della libreria.
Il client accede a al servizio della libreria utilizzando il token pubblicato dal servizio token di sicurezza della libreria.
Il client accede all'operazione
BuyBook
.
Vedere le istruzioni seguenti su come impostare ed eseguire l'esempio.
Nota
Per eseguire l'esempio, è necessario disporre di autorizzazioni di scrittura per la directory wwwroot.
Per impostare, compilare ed eseguire l'esempio
Aprire la finestra del prompt dei comandi SDK. Nel percorso di esempio, eseguire Setup.bat. Ciò crea le directory virtuali richieste per l'esempio e installa i certificati obbligatori con le autorizzazioni adeguate.
Nota
Il file batch Setup.bat è progettato per essere eseguito da un prompt dei comandi di SDK di Windows. e richiede che la variabile di ambiente MSSDK punti alla directory in cui è installato SDK. Questa variabile di ambiente viene impostata automaticamente all'interno di un prompt dei comandi di SDK di Windows. In Windows Vista, è necessario assicurarsi che Compatibilità di gestione con IIS 6.0 sia installato perché la configurazione utilizza script amministrativi di IIS. L'esecuzione dello script di installazione in Windows Vista richiede privilegi di amministratore.
Aprire FederationSample.sln in Visual Studio e selezionare Compila soluzione nel menu Compila. Compila i file di progetto comuni, il servizio della libreria, gli STS della libreria, gli STS di HomeRealm e li distribuisce in IIS. Compila anche l'applicazione client della libreria e posiziona il file eseguibile BookStoreClient.exe nella cartella FederationSample\BookStoreClient\bin\Debug.
Fare doppio clic su BookStoreClient.exe. Verrà visualizzata la finestra BookStoreClient.
È possibile esplorare i libri disponibili nella libreria facendo clic su Sfoglia libri.
Per acquistare un particolare libro, selezionarlo dall'elenco e fare clic su Acquista libro. L'applicazione si avvia e effettua l'autenticazione utilizzando l'autenticazione di Windows con il servizio token di protezione HomeRealm.
L'esempio è configurato per consentire agli utenti di acquistare libri che costano 15$ o meno. Il tentativo di acquistare volumi che costano più di 15$ comporta il ricevimento da parte del client di un messaggio Accesso negato dal servizio della libreria.
Nota
L'esempio non aggiorna il limite di credito dell'utente dopo un acquisto. È possibile acquistare ripetutamente libri entro i limiti di credito (fissi) dell'utente.
Per eseguire la pulizia
Eseguire Cleanup.bat. Ciò consente di eliminare le directory virtuali create durante l'installazione e di rimuovere inoltre i certificati installati durante l'installazione.