2017-06-20 4 views
0

J'ai une question très spécifique sur le cryptage de transport utilisé chez Windows Communication Foundation. J'ai écrit un client et une application de service. Le service est hébergé en tant que service Windows et a commencé avec un utilisateur spécial, disons Jeremy.Comment le cryptage WCF et handshake fonctionnent-ils exactement?

Mon client se trouve sur un ordinateur distinct mais dans le même domaine. La communication se fait via une liaison net.tcp avec un cryptage de transport.

Problème 1: si je renifle avec Wireshark, les premiers paquets sont en texte clair

Problème 2: dans le App.config du client est une identité étiquette générée automatiquement sous la forme de "[email protected]". Si je le vide, tout est envoyé en texte clair. Si je le supprime, le programme ne fonctionnera pas.

Est-ce que quelqu'un est capable de décrire ce qui se passe exactement pendant la poignée de main? Je pensais que Kerberos cherchait un ticket au service pour authentifier le client. Mais pourquoi est-ce en texte clair alors?

J'espère que quelqu'un est en mesure d'aider.

Modifier: Le clientCredentialType est bien sûr Windows avec ProtectionLevel: EncryptAndSign

Répondre

0

Ok après beaucoup de recherches, je trouve que ce happend en raison d'un écart de Kerberos un NTLM.

Le texte en clair que j'ai mentionné est la poignée de main entre le serveur et le client. Donc, si j'utilise Kerberos, le texte en clair n'est que quelques caractères qui appellent le service. Si Kerberos n'est alors pas disponible ou si vous changez la balise d'identité Kerberos revient à NTLM qui est responsable d'une poignée de main beaucoup plus longue et ainsi de suite quelques passages de texte plus clairs. Je maintenant forcé le client à utiliser Kerberos avec la ligne suivante:

<endpointBehaviors> 
    <behavior> 
     <clientCredentials> 
     <windows allowNtlm="false"/> 
     </clientCredentials> 
    </behavior> 
    </endpointBehaviors> 

vous pouvez voir maintenant les journaux de sécurité Windows que l'authentification se produit via Kerberos.

Voici les liens qui m'a aidé le plus à comprendre Kerberos et résoudre le problème:

https://blogs.msdn.microsoft.com/asiatech/2009/08/27/how-to-impersonate-or-delegate-a-client-in-wcf/

https://www.tecchannel.de/a/die-funktionsweise-von-kerberos,461645

https://msdn.microsoft.com/en-us/library/59hafwyt(v=vs.100).aspx