Udostępnij za pośrednictwem


Niestandardowa niezawodna sesja powiązania za pośrednictwem protokołu HTTPS

W przykładzie ReliableSessionOverHttps pokazano użycie zabezpieczeń transportu SSL z sesjami Reliable Sessions. Interfejs Reliable Sessions implementuje protokół WS-Reliable Messaging. Możesz mieć bezpieczną i niezawodną sesję, komponując WS-Security przy użyciu sesji niezawodnych. Jednak czasami możesz zamiast tego użyć zabezpieczeń transportu HTTP z protokołem SSL.

Przykładowe szczegóły

Protokół SSL gwarantuje, że same pakiety są zabezpieczone. Należy pamiętać, że różni się to od zabezpieczania niezawodnej sesji przy użyciu WS-Secure Conversation.

Aby korzystać z niezawodnej sesji za pośrednictwem protokołu HTTPS, należy utworzyć powiązanie niestandardowe. Ten przykład jest oparty na Rozpoczęcie, które implementuje usługę kalkulatora. Powiązanie niestandardowe jest tworzone przy użyciu elementu powiązania niezawodnej sesji i <httpsTransport>. Poniższa konfiguracja dotyczy niestandardowego wiązania.

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

Kod programu w przykładzie jest identyczny z kodem usługi Wprowadzenie . Przed utworzeniem i uruchomieniem przykładu należy utworzyć certyfikat i przypisać go za pomocą Kreatora certyfikatów serwera sieci Web. Definicja punktu końcowego i definicja powiązania w ustawieniach pliku konfiguracji umożliwiają użycie powiązania niestandardowego, jak pokazano w poniższej przykładowej konfiguracji klienta.

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

Określony adres używa schematu https:// .

Ponieważ certyfikat używany w tym przykładzie jest certyfikatem testowym utworzonym za pomocą Makecert.exe, podczas próby uzyskania dostępu do adresu https, takiego jak https://localhost/servicemodelsamples/service.svc, w przeglądarce jest wyświetlany alert zabezpieczeń. Aby umożliwić klientowi programu Windows Communication Foundation (WCF) pracę z certyfikatem testowym, do klienta dodano dodatkowy kod w celu pomijania alertu zabezpieczeń. Ten kod oraz towarzysząca klasa nie są wymagane przy korzystaniu z certyfikatów produkcyjnych.

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

Po uruchomieniu przykładu żądania operacji i odpowiedzi są wyświetlane w oknie konsoli klienta. Naciśnij ENTER w oknie klienta, aby zamknąć klienta.

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.

Aby skonfigurować, skompilować i uruchomić przykładowy program

  1. Zainstaluj ASP.NET 4.0 przy użyciu następującego polecenia.

    %windir%\Microsoft.NET\Framework\v4.0.XXXXX\aspnet_regiis.exe /i /enable
    
  2. Upewnij się, że wykonano procedurę instalacji One-Time dla przykładów programu Windows Communication Foundation.

  3. Upewnij się, że wykonano instrukcje instalacji certyfikatu serwera usług Internet Information Services (IIS).

  4. Aby skompilować wersję rozwiązania w języku C# lub Visual Basic .NET, postępuj zgodnie z instrukcjami w Kompilowanie przykładów Windows Communication Foundation.

  5. Aby uruchomić przykład w konfiguracji pojedynczej lub między maszynami, postępuj zgodnie z instrukcjami w Uruchamianie przykładów programu Windows Communication Foundation.