Udostępnij za pośrednictwem


Niestandardowe powiązanie niezawodnej sesji przez protokół 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ą niezawodną sesję, tworząc zabezpieczenia WS za pośrednictwem niezawodnych sesji. 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 usługi 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 wprowadzenie , który implementuje usługę kalkulatora. Powiązanie niestandardowe jest tworzone przy użyciu elementu powiązania niezawodnej sesji i <httpsTransport>. Poniższa konfiguracja jest powiązaniem niestandardowym.

<?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, alert zabezpieczeń jest wyświetlany podczas próby uzyskania dostępu do adresu HTTPS, takiego jak https://localhost/servicemodelsamples/service.svc, z przeglądarki. 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 i towarzyszący jej klasa nie są wymagane w przypadku korzystania 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 klawisz 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ład

  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 jednorazowej 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 temacie Building the Windows Communication Foundation Samples (Tworzenie przykładów programu Windows Communication Foundation).

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