Share via


WS Federation HTTP Binding

Cet exemple illustre comment implémenter un service fédéré typique, un service d'émission de jeton de sécurité et un client correspondant à l'aide de Windows Communication Foundation (WCF). Cet exemple comporte un programme de console client (client.exe), un programme de console de service d'émission de jeton de sécurité (securitytokenservice.exe) et un programme de la console de service (service.exe). Le service implémente un contrat qui définit un modèle de communication demande-réponse. Le contrat est défini par l'interface ICalculator, laquelle expose les opérations mathématiques suivantes : addition, soustraction, multiplication et division. Le client obtient un jeton de sécurité du STS et envoie des demandes synchrones, en fonction d'une opération mathématique donnée, au service, lequel lui répond en lui communiquant le résultat. L'activité du client est affichée dans la fenêtre de console.

Pour plus d'informations sur cette liaison, consultez How to: Create a WSFederationHttpBinding et How to: Configure Credentials on a Federation Service.

Aa395215.note(fr-fr,VS.90).gifRemarque :
La procédure d'installation ainsi que les instructions de génération relatives à cet exemple figurent en fin de rubrique.

Cet exemple expose le contrat ICalculator à l'aide de l'élément wsFederationHttpBinding Element. La configuration suivante de cette liaison figure sur le client.

<bindings>
  <wsFederationHttpBinding>
    <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" >
          <issuer address ="https://localhost:8000/sts/windows" 
                  binding ="wsHttpBinding" />
        </message>
      </security>
    </binding>
  </wsFederationHttpBinding>
</bindings>

Sur security element of wsFederationHttpBinding, la valeur security mode configure le mode de sécurité à utiliser. Dans cet exemple, la sécurité de niveau message est utilisée ; c'est pourquoi message element of wsFederationHttpBinding est spécifié à l'intérieur de security element of wsFederationHttpBinding. L'élément <issuer> de wsFederationHttpBinding dans l'élément message de wsFederationHttpBinding (voir message element of wsFederationHttpBinding) spécifie l'adresse et la liaison du STS qui publie un jeton de sécurité pour le client afin de permettre à ce dernier de s'authentifier auprès du service de calculatrice.

La configuration suivante de cette liaison figure sur le service.

<bindings>
  <wsFederationHttpBinding>
    <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" >
          <issuerMetadata address ="https://localhost:8000/sts/mex" >
            <identity>
              <certificateReference storeLocation ="CurrentUser"
                     storeName="TrustedPeople"
                     x509FindType ="FindBySubjectNameDistinguisedName" 
                     findValue ="CN=STS"/>
            </identity>
          </issuerMetadata>
        </message>
      </security>
    </binding>
  </wsFederationHttpBinding>
</bindings>

Sur security element of wsFederationHttpBinding, la valeur security mode configure le mode de sécurité à utiliser. Dans cet exemple, la sécurité de niveau message est utilisée ; c'est pourquoi <message> element of wsFederationHttpBinding est spécifié dans l'élément security de wsFederationHttpBinding (voir security element of wsFederationHttpBinding). L'élément <issuerMetadata> de wsFederationHttpBinding dans l'élément message de wsFederationHttpBinding (voir <message> element of wsFederationHttpBinding) spécifie l'adresse et l'identité du point de terminaison qui peut être utilisé afin de récupérer les métadonnées destinées au STS.

Le comportement du service est présenté dans le code suivant.

<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>

<issuedTokenAuthentication> of <serviceCredentials> permet au service de spécifier les contraintes des jetons que les clients sont autorisés à présenter pendant leur authentification. Cette configuration spécifie que les jetons signés par un certificat ayant CN=STS comme nom du sujet sont acceptés par le service.

Le STS expose un point de terminaison unique à l'aide de la liaison wsHttpBinding standard. Le STS répond aux demandes de jeton des clients et, à condition que ces derniers s'authentifient à l'aide d'un compte Windows, émet un jeton contenant leur nom d'utilisateur défini sous la forme d'une revendication. Dans le cadre de leur création, le STS signe les jetons à l'aide de la clé privée associée au certificat CN=STS. En outre, il crée une clé symétrique et la chiffre à l'aide de la clé publique associée au certificat CN=localhost. Lorsqu'il retourne le jeton au client, le STS retourne également la clé symétrique. Le client présente le jeton émis au service de calculatrice et prouve qu'il connaît la clé symétrique en signant le message à l'aide de celle-ci.

Exécution de l'exemple

Consultez les instructions suivantes pour exécuter l'exemple. Lorsque vous exécutez l'exemple, la demande de jeton de sécurité s'affiche dans la fenêtre de console du STS. Les demandes et réponses d'opération s'affichent dans les fenêtres de console du client et du service. Appuyez sur ENTER dans l'une ou l'autre de ces fenêtres pour arrêter l'application leur correspondant.

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.

Fichier de commandes d'installation

Le fichier de commandes Setup.cmd contenu dans cet exemple vous permet de configurer le serveur et le service d'émission de jeton de sécurité (STS) à l'aide des certificats permettant l'exécution des applications auto-hébergées. Il crée deux certificats dans le magasin de certificats LocalMachine/TrustedPeople. Le nom du sujet du premier certificat est CN=STS. Ce certificat est utilisé par le STS pour signer les jetons de sécurité destinés aux clients. Le nom du sujet du second certificat est CN=localhost. Ce certificat est utilisé par le STS pour chiffrer les informations confidentielles de sorte que le service puisse les déchiffrer.

Pour configurer, générer et exécuter l'exemple

  1. Exécutez le fichier Setup.cmd pour créer les certificats requis.

  2. Pour générer l'édition C# ou Visual Basic .NET de la solution, conformez-vous aux instructions figurant dans la rubrique Génération des exemples Windows Communication Foundation. Assurez-vous que tous les projets de la solution sont générés (Client, RSTRSTR, SecurityTokenService, Service, Shared).

  3. Assurez-vous que Service.exe et SecurityTokenService.exe s'exécutent.

  4. Exécutez client.exe.

Voir aussi

Tâches

WS 2007 Federation HTTP Binding

Send comments about this topic to Microsoft.
© 2007 Microsoft Corporation. All rights reserved.