Aracılığıyla paylaş


HTTPS Üzerinden Özel Bağlama Güvenli Oturum

ReliableSessionOverHttps örneği, Reliable Sessions ile SSL aktarım güvenliğinin kullanımını gösterir. Reliable Sessions, WS-Reliable Messaging protokolunu uygular. Güvenilir Oturumlar üzerinden WS-Security oluşturarak güvenli bir güvenilir oturum oluşturabilirsiniz. Ancak bazen BUNUN yerine SSL ile HTTP aktarım güvenliğini kullanmayı seçebilirsiniz.

Örnek Ayrıntılar

SSL, paketlerin güvenliğinin sağlanmasını sağlar. Bunun WS-Secure Conversation kullanarak güvenilir oturumun güvenliğini sağlamaktan farklı olduğunu unutmayın.

HTTPS üzerinden güvenilir oturum kullanmak için özel bir bağlama oluşturmanız gerekir. Bu örnek, hesap makinesi hizmeti uygulayan Başlarken'i temel alır. Güvenilir oturum bağlama öğesi ve <httpsTransport> kullanılarak özel bir bağlama oluşturulur. Aşağıdaki yapılandırma özel bağlamadır.

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

Örnekteki program kodu, Başlarken hizmetinin koduyla aynıdır. Örneği oluşturup çalıştırmadan önce bir sertifika oluşturup Web Sunucusu Sertifika Sihirbazı'nı kullanarak atamalısınız. Yapılandırma dosyası ayarlarındaki uç nokta tanımı ve bağlama tanımı, istemci için aşağıdaki örnek yapılandırmada gösterildiği gibi özel bağlama kullanımını etkinleştirir.

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

Belirtilen adres şemayı https:// kullanır.

Bu örnekte kullanılan sertifika Makecert.exe ile oluşturulmuş bir test sertifikası olduğundan tarayıcınızdan https: adresi gibi https://localhost/servicemodelsamples/service.svcbir https: adresine erişmeye çalıştığınızda bir güvenlik uyarısı görüntülenir. Windows Communication Foundation (WCF) istemcisinin yerinde bir test sertifikasıyla çalışmasına izin vermek için, güvenlik uyarısını engellemek için istemciye bazı ek kodlar eklenmiştir. Bu kod ve eşlik eden sınıf, üretim sertifikaları kullanılırken gerekli değildir.

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

Örneği çalıştırdığınızda, işlem istekleri ve yanıtları istemci konsolu penceresinde görüntülenir. İstemciyi kapatmak için istemci penceresinde ENTER tuşuna basın.

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.

Örneği ayarlamak, derlemek ve çalıştırmak için

  1. Aşağıdaki komutu kullanarak ASP.NET 4.0'ı yükleyin.

    %windir%\Microsoft.NET\Framework\v4.0.XXXXX\aspnet_regiis.exe /i /enable
    
  2. Windows Communication Foundation Örnekleri için Tek Seferlik Kurulum Yordamı'nı gerçekleştirdiğinizden emin olun.

  3. Internet Information Services (IIS) Sunucu Sertifikası Yükleme Yönergelerini gerçekleştirdiğinizden emin olun.

  4. Çözümün C# veya Visual Basic .NET sürümünü oluşturmak için Windows Communication Foundation Örnekleri Oluşturma başlığındaki yönergeleri izleyin.

  5. Örneği tek veya makineler arası bir yapılandırmada çalıştırmak için Windows Communication Foundation Örneklerini Çalıştırma başlığındaki yönergeleri izleyin.