Federation, exemple
L’exemple de fédération illustre la sécurité fédérée.
Détails de l'exemple
Windows Communication Foundation (WCF) prend en charge le déploiement d’architectures de sécurité fédérées via le wsFederationHttpBinding
. wsFederationHttpBinding
fournit une liaison sécurisée, fiable et interopérable qui implique l'utilisation de HTTP comme mécanisme de transport sous-jacent pour la communication demande/réponse, le format de câble d'encodage étant Text/XML. Pour plus d’informations sur la fédération dans WCF, consultez Fédération.
Le scénario comporte 4 parties :
Service BookStore
STS BookStore
STS HomeRealm
Client BookStore
Le service BookStore prend en charge deux opérations : BrowseBooks
et BuyBook
. Il autorise l'accès anonyme à l'opération BrowseBooks
, mais requiert l'authentification pour accéder à l'opération BuyBooks
. L'authentification prend la forme d'un jeton émis par le STS BookStore. Le fichier de configuration du service BookStore pointe des clients sur le STS BookStore à l'aide de 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>
Le STS BookStore impose ensuite aux clients de s'authentifier à l'aide d'un jeton émis par le STS HomeRealm. Une fois encore, le fichier de configuration du STS BookStore pointe des clients sur le STS HomeRealm à l'aide de 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 séquence des événements lors de l'accès à l'opération BuyBook
est la suivante :
Le client s'authentifie auprès du STS HomeRealm à l'aide d'informations d'identification Windows.
Le STS HomeRealm émet un jeton qui peut être utilisé pour s'authentifier auprès du STS BookStore.
Le client s'authentifie auprès du STS BookStore à l'aide du jeton émis par le STS HomeRealm.
Le STS BookStore émet un jeton qui peut être utilisé pour s'authentifier auprès du service BookStore.
Le client s'authentifie auprès du service BookStore à l'aide du jeton émis par le STS BookStore.
Le client accède à l'opération
BuyBook
.
Suivez les instructions suivantes sur la configuration et l'exécution de cet exemple.
Notes
Vous devez disposer des autorisations d’écriture dans le répertoire wwwroot pour exécuter cet exemple.
Pour configurer, générer et exécuter l'exemple
Ouvrez la fenêtre de commande de Kit de développement SDK. Dans le chemin d’accès de l’exemple, exécutez Setup.bat. Cette opération crée les répertoires virtuels requis pour l'exemple et installe les certificats requis avec les autorisations appropriées.
Notes
Le fichier de commandes Setup.bat est conçu pour s'exécuter à partir d'une invite de commandes du Kit de développement Windows SDK. La variable d'environnement du Kit de développement MS SDK doit pointer vers le répertoire d'installation du Kit de développement SDK. Cette variable est définie automatiquement dans une invite de commandes du Kit de développement logiciel Windows. Sur Windows Vista, vous devez vous assurer que la compatibilité de gestion IIS 6.0 est installée, car la configuration utilise des scripts d’administrateur IIS. L’exécution du script de configuration sur Windows Vista nécessite des privilèges d’administrateur.
Ouvrez FederationSample.sln dans Visual Studio et sélectionnez Générer la solution à partir du menu Générer . Cette opération génère les fichiers de projet communs, le service Bookstore, le STS Bookstore, le STS HomeRealm, et les déploie dans IIS. Elle génère également l’application cliente Bookstore et place le fichier exécutable BookStoreClient.exe dans le dossier FederationSample\BookStoreClient\bin\Debug.
Double-cliquez sur BookStoreClient.exe. La fenêtre BookStoreClient s'affiche.
Vous pouvez parcourir les livres disponibles dans la librairie en cliquant sur Parcourir les livres.
Pour acheter un livre particulier, sélectionnez le livre dans la liste, puis cliquez sur Acheter un livre. L'application démarre et s'authentifie à l'aide de l'authentification Windows avec le STS HomeRealm.
L'exemple est configuré pour permettre aux utilisateurs d'acheter des livres pour un montant égal ou inférieur à 15 dollars. Si un client tente d'acheter des livres pour un montant supérieur à 15 dollars, il reçoit un message du service BookStore indiquant que l'accès est refusé.
Notes
L’exemple ne met pas à jour la limite de crédit de l’utilisateur après un achat. Vous pouvez acheter des livres à plusieurs reprises dans la limite de crédit (fixe) de l’utilisateur.
Pour nettoyer
Exécutez Cleanup.bat. Cette opération supprime les répertoires virtuels créés pendant l'installation ainsi que les certificats installés pendant l'installation.