Compartilhar via


Segurança de Mensagem no Windows

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

Observação

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

A segurança padrão para o <wsHttpBinding> é a segurança de mensagem usando a autenticação do Windows. Os arquivos de configuração neste exemplo definem explicitamente o atributo mode da <segurança> para Message e o atributo clientCredentialType como Windows. Esses valores são os valores padrão dessa associação, mas foram configurados explicitamente, 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 de cliente é configurada com o securityMode e authenticationMode apropriados.

<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 ele 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 e respostas da operação 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. Verifique se você executou o Procedimento de instalação avulsa dos exemplos do Windows Communication Foundation.

  2. Para compilar a edição .NET do C# ou do Visual Basic da solução, siga as instruções contidas em Como Compilar as Amostras do Windows Communication Foundation.

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