Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
A segurança do WCF (Windows Communication Foundation) tem três modos de segurança comuns encontrados na maioria das associações predefinidas: transporte, mensagem e "transporte com credencial de mensagem". Dois modos adicionais são específicos para duas associações: o modo "somente credenciais de transporte" encontrado no BasicHttpBinding e o modo "Ambos", encontrado no NetMsmqBinding. No entanto, este tópico se concentra nos três modos de segurança comuns: Transport, Messagee TransportWithMessageCredential.
Observe que nem toda associação predefinida dá suporte a todos esses modos. Este tópico define o modo com as classes WSHttpBinding e NetTcpBinding, e demonstra como definir o modo programaticamente e por meio de configuração.
Para obter mais informações, consulte a segurança do WCF, consulte Visão Geral de Segurança, Proteção de Serviços e Proteção de Serviços e Clientes. Para obter mais informações sobre o modo de transporte e mensagem, consulte Segurança de Transporte e Segurança de Mensagem.
Para definir o modo de segurança no código
Crie uma instância da classe de associação que você está usando. Para obter uma lista de associações predefinidas, consulte Associações Fornecidas pelo Sistema. Esse exemplo cria uma instância da classe WSHttpBinding.
Defina a propriedade
Modedo objeto retornado pela propriedadeSecurity.WSHttpBinding b = new WSHttpBinding(); b.Security.Mode = SecurityMode.Transport;Dim b As New WSHttpBinding() b.Security.Mode = SecurityMode.TransportComo alternativa, defina o modo como mensagem, conforme mostrado no código a seguir.
WSHttpBinding b = new WSHttpBinding(); b.Security.Mode = SecurityMode.Message;Dim b As New WSHttpBinding() b.Security.Mode = SecurityMode.MessageOu defina o modo como transporte com credenciais de mensagem, conforme mostrado no código a seguir.
WSHttpBinding b = new WSHttpBinding(); b.Security.Mode = SecurityMode.TransportWithMessageCredential;Dim b As New WSHttpBinding() b.Security.Mode = SecurityMode.TransportWithMessageCredentialVocê também pode definir o modo no construtor da associação, conforme mostrado no código a seguir.
WSHttpBinding b = new WSHttpBinding(SecurityMode.Message);Dim b As New WSHttpBinding(SecurityMode.Message)
Configuração da propriedade ClientCredentialType
Configurar o modo como um dos três valores determina como você define a propriedade ClientCredentialType. Por exemplo, usando a classe WSHttpBinding, configurar o modo como Transport significa que você deve definir a propriedade ClientCredentialType da classe HttpTransportSecurity como um valor apropriado.
Para definir a propriedade ClientCredentialType como modo transporte
Crie uma instância da associação.
Defina a propriedade
ModecomoTransport.Defina a propriedade
ClientCredentialcom um valor apropriado. O código a seguir define a propriedade comoWindows.WSHttpBinding b = new WSHttpBinding(); b.Security.Mode = SecurityMode.Transport; b.Security.Transport.ClientCredentialType = HttpClientCredentialType.Windows;Dim b As New WSHttpBinding() b.Security.Mode = SecurityMode.Transport b.Security.Transport.ClientCredentialType = HttpClientCredentialType.Windows
Para definir a propriedade ClientCredentialType como modo mensagem
Crie uma instância da associação.
Defina a propriedade
ModecomoMessage.Defina a propriedade
ClientCredentialcom um valor apropriado. O código a seguir define a propriedade comoCertificate.WSHttpBinding b = new WSHttpBinding(); b.Security.Mode = SecurityMode.Message; b.Security.Message.ClientCredentialType = MessageCredentialType.Certificate;Dim b As New WSHttpBinding() b.Security.Mode = SecurityMode.Message b.Security.Message.ClientCredentialType = MessageCredentialType.Certificate
Para definir a propriedade Mode e ClientCredentialType na configuração
Adicione um elemento de associação apropriado ao elemento de <associações> do arquivo de configuração. O exemplo a seguir adiciona um elemento de <wsHttpBinding>.
Adicione um elemento
<binding>e defina seu atributonamecom um valor apropriado.Adicione um elemento
<security>e defina o atributomodecomoMessage,TransportouTransportWithMessageCredential.Se o modo estiver definido como
Transport, adicione um elemento<transport>e defina o atributoclientCredentialcom um valor apropriado.O exemplo a seguir define o modo como "
Transport"e define o atributoclientCredentialTypedo elemento<transport>como "Windows".<wsHttpBinding> <binding name="TransportSecurity"> <security mode="Transport" > <transport clientCredentialType = "Windows" /> </security> </binding> </wsHttpBinding >Como alternativa, defina
security modecomo "Message", seguido por um elemento<"message">. Este exemplo define oclientCredentialTypecomo "Certificate".<wsHttpBinding> <binding name="MessageSecurity"> <security mode="Message" > <message clientCredentialType = "Certificate" /> </security> </binding> </wsHttpBinding >Usar o valor TransportWithMessageCredential é um caso especial e é explicado abaixo.
Usando TransportWithMessageCredential
Ao definir o modo de segurança como TransportWithMessageCredential, o transporte determina o mecanismo real que fornece a segurança no nível do transporte. Por exemplo, o protocolo HTTP usa a SSL (Secure Sockets Layer) via HTTP (HTTPS). Portanto, a configuração da propriedade ClientCredentialType de qualquer objeto de segurança de transporte (como HttpTransportSecurity) será ignorada. Em outras palavras, você só pode definir o objeto de segurança da mensagem ClientCredentialType (para a associação WSHttpBinding, o objeto NonDualMessageSecurityOverHttp).
Para obter mais informações, consulte Como usar a segurança do transporte e as credenciais de mensagem.