Condividi tramite


Sessione affidabile dell'associazione personalizzata su HTTPS

L'esempio ReliableSessionOverHttps illustra l'uso della sicurezza del trasporto SSL con sessioni affidabili. Reliable Sessions implementa il protocollo di messaggistica WS-Reliable. È possibile avere una sessione affidabile sicura componendo WS-Security su sessioni affidabili. In alcuni casi, tuttavia, è possibile scegliere di usare la sicurezza del trasporto HTTP con SSL.

Dettagli di esempio

SSL garantisce che i pacchetti stessi siano protetti. È importante notare che questa operazione è diversa dalla protezione della sessione affidabile utilizzando WS-Secure Conversation.

Per usare una sessione affidabile su HTTPS, è necessario creare un'associazione personalizzata. Questo esempio si basa sull'Introduzione che implementa un servizio calcolatrice. Viene creata un'associazione personalizzata usando l'elemento di associazione di sessione affidabile e <httpsTransport>. La configurazione seguente è dell'associazione personalizzata.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.serviceModel>
    <services>
      <service
          name="Microsoft.ServiceModel.Samples.CalculatorService"
          behaviorConfiguration="CalculatorServiceBehavior">
        <!-- use base address provided by host -->
        <endpoint address=""
                  binding="customBinding"
                  bindingConfiguration="reliableSessionOverHttps"
                  contract="Microsoft.ServiceModel.Samples.ICalculator" />
        <!-- the mex endpoint is exposed as http://localhost/servicemodelsamples/service.svc/mex-->
        <endpoint address="mex"
                  binding="mexHttpBinding"
                  contract="IMetadataExchange"/>
      </service>
    </services>

    <bindings>
      <customBinding>
        <binding name="reliableSessionOverHttps">
          <reliableSession />
          <httpsTransport />
        </binding>
      </customBinding>
    </bindings>

    <!--For debugging purposes set the includeExceptionDetailInFaults attribute to true-->
    <behaviors>
      <serviceBehaviors>
        <behavior name="CalculatorServiceBehavior">
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="False" />
        </behavior>
      </serviceBehaviors>
    </behaviors>

  </system.serviceModel>

</configuration>

Il codice del programma nell'esempio è identico a quello del servizio Attività iniziali . È necessario creare un certificato e assegnarlo usando la procedura guidata del certificato del server Web, prima di eseguire e compilare l'esempio. La definizione dell'endpoint e la definizione dell'associazione nelle impostazioni del file di configurazione consentono l'uso dell'associazione personalizzata, come illustrato nella configurazione di esempio seguente per il client.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.serviceModel>

    <client>
      <!-- this endpoint has an https: address -->
      <endpoint name=""
                address="https://localhost/servicemodelsamples/service.svc"
                binding="customBinding"
                bindingConfiguration="reliableSessionOverHttps"
                contract="Microsoft.ServiceModel.Samples.ICalculator" />
    </client>

      <bindings>
        <customBinding>
          <binding name="reliableSessionOverHttps">
            <reliableSession />
            <httpsTransport />
          </binding>
        </customBinding>
    </bindings>

  </system.serviceModel>

</configuration>

L'indirizzo specificato usa lo https:// schema .

Poiché il certificato usato in questo esempio è un certificato di test creato con Makecert.exe, viene visualizzato un avviso di sicurezza quando si tenta di accedere a un indirizzo https: , ad esempio https://localhost/servicemodelsamples/service.svc, dal browser. Per consentire al client Windows Communication Foundation (WCF) di lavorare con un certificato di test sul posto, è stato aggiunto un codice aggiuntivo al client per eliminare l'avviso di sicurezza. Questo codice e la classe associata non sono necessari quando si usano i certificati di produzione.

// This code is required only for test certificates like those created by Makecert.exe.
PermissiveCertificatePolicy.Enact("CN=ServiceModelSamples-HTTPS-Server");

Quando si esegue l'esempio, le richieste e le risposte dell'operazione vengono visualizzate nella finestra della console client. Premere INVIO nella finestra del client per chiudere il client.

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.

Per configurare, compilare ed eseguire l'esempio

  1. Installare ASP.NET 4.0 usando il comando seguente.

    %windir%\Microsoft.NET\Framework\v4.0.XXXXX\aspnet_regiis.exe /i /enable
    
  2. Assicurati di aver eseguito la procedura di installazione di One-Time per gli esempi di Windows Communication Foundation.

  3. Assicurarsi di aver eseguito le istruzioni per l'installazione dei certificati del server Internet Information Services (IIS).

  4. Per compilare l'edizione C# o Visual Basic .NET della soluzione, seguire le istruzioni in Compilazione degli esempi di Windows Communication Foundation.

  5. Per eseguire l'esempio in una configurazione con computer singolo o incrociato, seguire le istruzioni riportate in Esecuzione degli esempi di Windows Communication Foundation.