Sessão confiável de vinculação personalizada sobre HTTPS

O exemplo ReliableSessionOverHttps demonstra o uso da segurança de transporte SSL com sessões confiáveis. Reliable Sessions implementa o protocolo WS-Reliable Messaging. Você pode ter uma sessão segura e confiável compondo WS-Security sobre sessões confiáveis. Mas, às vezes, você pode optar por usar a segurança de transporte HTTP com SSL.

Detalhes da amostra

O SSL garante que os próprios pacotes estejam protegidos. É importante notar que isso é diferente de proteger a sessão confiável usando o WS-Secure Conversation.

Para usar uma sessão confiável sobre HTTPS, você deve criar uma associação personalizada. Este exemplo é baseado na Introdução que implementa um serviço de calculadora. Uma associação personalizada é criada usando o elemento de vinculação de sessão confiável e o httpsTransport>.< A configuração a seguir é da associação personalizada.

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

O código do programa no exemplo é idêntico ao do serviço de Introdução . Você deve criar um certificado e atribuí-lo usando o Assistente de Certificado de Servidor Web antes de criar e executar o exemplo. A definição de ponto de extremidade e a definição de vinculação nas definições do arquivo de configuração permitem o uso de vinculação personalizada, conforme mostrado na configuração de exemplo a seguir para o cliente.

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

O endereço especificado usa o https:// esquema.

Como o certificado usado neste exemplo é um certificado de teste criado com Makecert.exe, um alerta de segurança aparece quando você tenta acessar um endereço https:, como https://localhost/servicemodelsamples/service.svc, do navegador. Para permitir que o cliente Windows Communication Foundation (WCF) trabalhe com um certificado de teste instalado, algum código adicional foi adicionado ao cliente para suprimir o alerta de segurança. Este código e a classe que o acompanha não são necessários quando se utilizam certificados de produção.

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

Quando você executa o exemplo, as solicitações de operação e as respostas são exibidas na janela do console do cliente. Pressione ENTER na janela do cliente para desligar o cliente.

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.

Para configurar, compilar e executar o exemplo

  1. Instale o ASP.NET 4.0 usando o seguinte comando.

    %windir%\Microsoft.NET\Framework\v4.0.XXXXX\aspnet_regiis.exe /i /enable
    
  2. Certifique-se de ter executado o procedimento de instalação única para os exemplos do Windows Communication Foundation.

  3. Verifique se você executou as Instruções de Instalação do Certificado de Servidor do IIS (Serviços de Informações da Internet).

  4. Para criar a edição C# ou Visual Basic .NET da solução, siga as instruções em Criando os exemplos do Windows Communication Foundation.

  5. Para executar o exemplo em uma configuração de máquina única ou cruzada, siga as instruções em Executando os exemplos do Windows Communication Foundation.