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
Certifique-se de ter executado o procedimento de instalação única para os exemplos do Windows Communication Foundation.
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.
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.