Qual segurança é usada por padrão no WSHttpBinding (lado do serviço) ou no cliente de Teste WCF (lado do cliente)?

8

Recentemente, mudei um serviço de BasicHttpBinding para WSHttpBinding (ou seja, SOAP 1.1 -> SOAP 1.2). No WCF , o uso de WSHttpBinding () faz com que comece a usar algumas configurações de segurança padrão. Presumo que as mesmas configurações de segurança padrão também sejam usadas pelo Cliente de Teste do WCF, pois o cliente e o servidor podem continuar falando depois de mudar para o WSHttpBinding 'seguro'. No violinista, confirmei essa configuração de segurança, pois posso testemunhar handshakes de segurança mais complexos com a resposta de solicitação anteriormente simples demais, ou seja,

Antes: (BasicHttpBinding)

  1. [HttpRequest] (solicitação SOAP em Clear)

    [HttpResponse] (resposta SOAP em claro)

Depois: (WSHttpBinding)

  1. [HttpRequest] RequestSecurityToken

    [HttpResponse] RequestSecurityTokenResponse

  2. [HttpRequest] RequestSecurityToken

    [HttpResponse] RequestSecurityTokenResponse

  3. [HttpRequest] RequestSecurityTokenResponse

    [HttpResponse] RequestSecurityTokenResponseCollection

  4. [HttpRequest] EncryptedData

    [HttpResponse] EncryptedData

  5. [HttpRequest] EncryptedData (solicitação real no nível do aplicativo)

    [HttpResponse] EncryptedData (resposta real no nível do aplicativo)

Portanto, posso assumir com segurança que a segurança está sendo aplicada. Agora para as perguntas:

Pergunta 1: Quais são as configurações de segurança? Eu nunca disse ao WCF de nenhum provedor de associação. Na verdade, eu não tenho nenhuma tabela (SQL ou XML) de nenhum nome de usuário <-> senhas. Então, que tipo de autenticação está acontecendo? Embora o Cliente de Teste do WCF possa se autenticar como acima, o SoapUI não atende aos padrões do Microsoft .NET e apresenta problemas. O SoapUI tenta comunicações de texto não criptografado e o servidor responde com um erro incorreto do token de segurança.

Pergunta 2: Qual é o modelo de segurança mais praticado no SOAP 1.2? É através de certificados ou senhas de nome de usuário ou resumo ou _____? Como essas credenciais são armazenadas (SQL / XML?) E configuradas no lado do servidor WCF?

DeepSpace101
fonte

Respostas:

7

Bem, o famoso WSHTTPBinding. Isso causa muita dor para plataformas que não são do .NET.

Antes de tudo, mesmo que o SOAP 1.2 seja um padrão, o WSHTTPBinding é uma implementação da Microsoft sobre o SOAP 1.2 e, por experiência, não é tão fácil quanto "Nosso produto oferece suporte ao SOAP 1.2, para que funcione com os serviços WCF e WSHTTPBinding, sem problemas!" .

resposta 1

Existem duas configurações principais de segurança:

  • Segurança da mensagem: a mensagem é parcialmente criptografada, Padrão
  • Segurança de transporte : usa SSL para proteger o canal

Sobre a autenticação, o WSHTTPBinding usa credenciais do Windows (NTLM ou Kerberos) por padrão.

Resposta 2

Depende, mas uma resposta curta é:

  • Você precisa redirecionar as mensagens ou inspecioná-las: use o Message Security
  • Você precisa de canais ponto a ponto e pode protegê-los com certificados: use Transport Security
  • Seus clientes e servidores compartilham a mesma plataforma de autenticação, use a autenticação do Windows
  • Você precisa de uma autenticação aberta para clientes externos ou de plataforma cruzada, use autenticação de nome de usuário

Sobre a autenticação de nome de usuário, existem configurações diferentes. Você pode armazenar as credenciais em um banco de dados SQL, sim (fazemos isso em nossa empresa para alguns serviços).

Alguns casos simples: Melhorando a segurança dos serviços da Web: cenários e diretrizes de implementação para o WCF

JoeBilly
fonte
Obrigado! Esse link também é MUITO útil. Então, estou pensando em usar SOAP 1.2 + SSL + Autenticação básica, pois precisamos oferecer suporte a clientes externos / de terceiros. Alguma dica / advertência específica nessa configuração? O WS2007HttpBinding é recomendado sobre o WSHttpBinding?
DeepSpace101
1
Não sei muito sobre o WS2007HttpBinding, mas você pode encontrar uma descrição dos protocolos suportados aqui: msdn.microsoft.com/en-us/library/ms730294.aspx . Sobre a instalação, é necessário fazer algumas análises para configurar corretamente o modo da instância de serviços e tamanhos de mensagens e ligações de tempo limite.
JoeBilly