Associazione HTTP WS 2007 FederationWS 2007 Federation HTTP Binding

In questo esempio viene descritto l'utilizzo di WS2007FederationHttpBinding, un'associazione standard che è possibile utilizzare per compilare scenari federati che supportano la versione 1.3 della specifica WS-Trust.This sample demonstrates the use of WS2007FederationHttpBinding, a standard binding that you can use to build federated scenarios that support version 1.3 of the WS-Trust specification.

Nota

La procedura di installazione e le istruzioni di compilazione per questo esempio si trovano alla fine di questo argomento.The setup procedure and build instructions for this sample are located at the end of this topic.

Questo esempio è costituito da un programma console (Client.exe), da un programma del servizio token di sicurezza basato su console (Securitytokenservice.exe) e da un programma di console del servizio (Service.exe).The sample consists of a console-based client program (Client.exe), a console-based security token service program (Securitytokenservice.exe), and a console-based service program (Service.exe). Il servizio implementa un contratto che definisce un modello di comunicazione request/reply.The service implements a contract that defines a request/reply communication pattern. Il contratto viene definito dall'interfaccia ICalculator che espone operazioni matematiche (Add, Subtract, Multiply e Divide).The contract is defined by the ICalculator interface, which exposes math operations (Add, Subtract, Multiply, and Divide). Il client riceve un token di protezione dal servizio token di sicurezza (STS), esegue richieste sincrone al servizio per un'operazione matematica specificata.The client obtains a security token from the Security Token Service (STS) and makes synchronous requests to the service for a given math operation. Il servizio risponde quindi fornendo il risultato.The service then replies with the result. L'attività del client è visibile nella finestra della console.Client activity is visible in the console window.

L'esempio rende disponibile il contratto ICalculator utilizzando l'elemento ws2007FederationHttpBinding.The sample makes the ICalculator contract available using the ws2007FederationHttpBinding element. La configurazione di quest'associazione sul client viene illustrata nel codice seguente.The configuration of this binding on the client is shown in the following 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>  

Nel <sicurezza >, security valore specifica la modalità di sicurezza deve essere utilizzata.On the <security>, the security value specifies which security mode should be used. In questo esempio, message viene utilizzata la sicurezza per questo motivo il <messaggio > viene specificato all'interno di <sicurezza >.In this sample, message security is used, which is why the <message> is specified inside the <security>. Il <dell'autorità di certificazione > elemento all'interno di <messaggio > specifica l'indirizzo e l'associazione per il servizio token di sicurezza che rilascia un token di sicurezza per il client in modo che il client può eseguire l'autenticazione di ICalculator servizio.The <issuer> element inside the <message> specifies the address and binding for the STS that issues a security token to the client so that the client can authenticate to the ICalculator service.

La configurazione di quest'associazione sul servizio viene illustrata nel seguente codice.The configuration of this binding on the service is shown in the following 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>  

Nel <sicurezza >, security valore specifica la modalità di sicurezza deve essere utilizzata.On the <security>, the security value specifies which security mode should be used. In questo esempio, message viene utilizzata la sicurezza per questo motivo il <messaggio > viene specificato all'interno di <sicurezza >.In this sample, message security is used, which is why the <message> is specified inside the <security>. Il <issuerMetadata > elemento di ws2007FederationHttpBinding all'interno di <messaggio > specifica l'indirizzo e l'identità di un endpoint che può essere utilizzato per recuperare metadati per il servizio token di sicurezza.The <issuerMetadata> element of ws2007FederationHttpBinding inside the <message> specifies the address and identity for an endpoint that can be used to retrieve metadata for the STS.

Il comportamento per il servizio viene illustrato nel codice seguente.The behavior for the service is shown in the following 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>  

Il <issuedTokenAuthentication >> consente al servizio specificare i vincoli su token che i client possono presentare durante l'autenticazione.The <issuedTokenAuthentication>> allows the service to specify constraints on the tokens it allows clients to present during authentication. Questa configurazione specifica che i token firmati da un certificato il cui nome di soggetto è CN=STS possono essere accettati dal servizio.This configuration specifies that tokens signed by a certificate whose subject name is CN=STS are accepted by the service.

Il servizio token di sicurezza rende disponibile un singolo endpoint utilizzando l'oggetto WS2007HttpBinding standard.STS makes a single endpoint available using the standard WS2007HttpBinding. Il servizio risponde alle richieste dei client per i token.The service responds to requests from clients for tokens. Se il client viene autenticato utilizzando un account di Windows, il servizio pubblica un token che contiene il nome utente del client come attestazione.If the client is authenticated using a Windows account, the service issues a token that contains the client's user name as a claim. Come parte del processo di creazione del token, il servizio token di sicurezza firma il token utilizzando la chiave privata associata al certificato CN=STS .As part of creating the token, STS signs the token using the private key associated with the CN=STS certificate. Crea, inoltre, una chiave simmetrica e la crittografa utilizzando la chiave pubblica associata al certificato CN=localhost.In addition, it creates a symmetric key and encrypts it using the public key associated with the CN=localhost certificate. Nel restituire il token al client, il servizio token di sicurezza restituisce anche la chiave simmetrica.In returning the token to the client, STS also returns the symmetric key. Il client presenta il token emesso al servizio ICalculator e dimostra che conosce la chiave simmetrica firmando il messaggio con quella chiave.The client presents the issued token to the ICalculator service and proves that it knows the symmetric key by signing the message with that key.

Quando si esegue l'esempio, la richiesta per il token di sicurezza viene visualizzata nella finestra della console del servizio token di sicurezza.When you run the sample, the request for the security token is shown in the STS console window. Le richieste e le risposte dell'operazione vengono visualizzate nella finestra della console del client e in quella del servizio.The operation's requests and responses are displayed in the client and service console windows. Premere INVIO in una delle finestre della console per arrestare l'applicazione.Press ENTER in any of the console windows to shut down the application.

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 file Setup.bat incluso in questo esempio consente di configurare il server e il servizio token di sicurezza con i certificati attinenti per eseguire un'applicazione indipendente.The Setup.bat file included with this sample allows you to configure the server and STS with the relevant certificates to run a self-hosted application. Il file batch crea due certificati, nell'archivio certificati di LocalMachine/TrustedPeople.The batch file creates two certificates in the LocalMachine/TrustedPeople certificate store. Il primo certificato ha un nome soggetto di CN=STS e viene utilizzato dal servizio token di sicurezza per firmare i token di protezione emessi al client.The first certificate has a subject name of CN=STS and is used by STS to sign the security tokens that it issues to the client. Il secondo certificato ha un nome soggetto di CN=localhost e viene utilizzato dal servizio token di sicurezza per crittografare una chiave in modo che il servizio non possa decrittografarla.The second certificate has a subject name of CN=localhost and is used by STS to encrypt a key in a way that the service can decrypt.

Per impostare, compilare ed eseguire l'esempioTo set up, build, and run the sample

  1. Assicurarsi di avere eseguito la procedura di installazione singola per gli esempi di Windows Communication Foundation.Ensure that you have performed the One-Time Setup Procedure for the Windows Communication Foundation Samples.

  2. Aprire un prompt dei comandi di Visual Studio con privilegi di amministratore ed eseguire Setup.bat per creare i certificati necessari.Open a Visual Studio command prompt with administrator privileges and run the Setup.bat file to create the required certificates.

Questo file batch utilizza Certmgr.exe e Makecert.exe, distribuiti con Windows SDK.This batch file uses Certmgr.exe and Makecert.exe, which are distributed with the Windows SDK. È necessario tuttavia eseguire Setup.bat in un prompt dei comandi di Visual Studio per consentire allo script di trovare tali strumenti.However, you must run Setup.bat from within a Visual Studio command prompt to enable the script to find these tools.

  1. Per compilare l'edizione in C# o Visual Basic .NET della soluzione, seguire le istruzioni in Building the Windows Communication Foundation Samples.To build the C# or Visual Basic .NET edition of the solution, follow the instructions in Building the Windows Communication Foundation Samples.

  2. Per eseguire l'esempio in una configurazione a una o più computer, seguire le istruzioni in esegue gli esempi di Windows Communication Foundation.To run the sample in a single- or cross-computer configuration, follow the instructions in Running the Windows Communication Foundation Samples. Se si utilizza Windows VistaWindows Vista, è necessario eseguire Service.exe, Client.exe e SecurityTokenService.exe con privilegi elevati (fare clic sui file e quindi fare clic su Esegui come amministratore).If you are using Windows VistaWindows Vista, you must run Service.exe, Client.exe, and SecurityTokenService.exe with elevated privileges (right-click the files and then click Run as administrator).

Importante

È possibile che gli esempi siano già installati nel computer.The samples may already be installed on your computer. Verificare la directory seguente (impostazione predefinita) prima di continuare.Check for the following (default) directory before continuing.

<InstallDrive>:\WF_WCF_Samples

Se questa directory non esiste, andare al Windows Communication Foundation (WCF) e gli esempi di Windows Workflow Foundation (WF) per .NET Framework 4 per scaricare tutti i Windows Communication Foundation (WCF) e WFWF esempi.If this directory does not exist, go to Windows Communication Foundation (WCF) and Windows Workflow Foundation (WF) Samples for .NET Framework 4 to download all Windows Communication Foundation (WCF) and WFWF samples. Questo esempio si trova nella directory seguente.This sample is located in the following directory.

<InstallDrive>:\WF_WCF_Samples\WCF\Basic\Binding\WS\WS2007FederationHttp

Vedere ancheSee Also