Partilhar via


Janelas de Segurança de Mensagens

Este exemplo demonstra como configurar uma associação para usar a WSHttpBinding segurança no nível da mensagem com a autenticação do Windows. Este exemplo é baseado em Introdução. Neste exemplo, o serviço é hospedado no IIS (Serviços de Informações da Internet) e o cliente é um aplicativo de console (.exe).

Nota

O procedimento de configuração e as instruções de compilação para este exemplo estão localizados no final deste tópico.

A segurança padrão para o wsHttpBinding> é a segurança da mensagem usando a <autenticação do Windows. Os arquivos de configuração neste exemplo definem explicitamente o mode<atributo da segurança> como Message e o clientCredentialType atributo como Windows. Esses valores são os valores padrão para essa ligação, mas foram explicitamente configurados, conforme mostrado na configuração de exemplo a seguir para demonstrar seu uso.

<bindings>
    <wsHttpBinding>
        <binding>
            <security mode="Message">
                <message clientCredentialType="Windows"/>
            </security>
        </binding>
    </wsHttpBinding>
</bindings>

A configuração do ponto de extremidade do cliente consiste em um endereço absoluto para o ponto de extremidade de serviço, a associação e o contrato. A associação do cliente é configurada com o apropriado securityMode e authenticationMode.

<system.serviceModel>
  <client>
    <endpoint address=
            "http://localhost/servicemodelsamples/service.svc"
            binding="wsHttpBinding"
            bindingConfiguration="Binding1"
            contract="Microsoft.ServiceModel.Samples.ICalculator" />
  </client>

  <bindings>
    <wsHttpBinding>
      <!-- The default security for the WSHttpBinding is -->
      <!-- Message security using Windows authentication. -->
      <!-- This configuration explicitly defines the security mode -->
      <!-- as Message and the clientCredentialType as Windows -->
      <!-- for demonstration purposes. -->
      <binding name="Binding1">
        <security mode="Message">
          <message clientCredentialType="Windows"/>
        </security>
      </binding>
    </wsHttpBinding>
  </bindings>
</system.serviceModel>

O código-fonte do serviço foi modificado para demonstrar como o ServiceSecurityContext pode ser usado para acessar a identidade do chamador.

public string GetCallerIdentity()
{
    // The Windows identity of the caller can be accessed on the ServiceSecurityContext.WindowsIdentity.
    return OperationContext.Current.ServiceSecurityContext.WindowsIdentity.Name;
}

Quando você executa o exemplo, as solicitações de operação e as respostas são exibidas na janela do console do cliente. O primeiro método chamado - GetCallerIdentity - retorna o nome da identidade do chamador de volta para o cliente. Pressione ENTER na janela do console para desligar o cliente.

Para configurar, compilar e executar o exemplo

  1. Certifique-se de ter executado o procedimento de instalação única para os exemplos do Windows Communication Foundation.

  2. 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.

  3. Para executar o exemplo em uma configuração de computador único ou entre computadores, siga as instruções em Executando os exemplos do Windows Communication Foundation.