Как работает шифрование и рукопожатие WCF?
У меня очень специфический вопрос о транспортном шифровании, используемом в Windows Communication Foundation. Я написал клиент и приложение-службу. Служба размещается как служба Windows и запускается с помощью специального пользователя, скажем, Джереми.
Мой клиент находится на отдельном компьютере, но в том же домене. Связь происходит через связывание net.tcp с транспортным шифрованием.
Проблема 1: если я нюхаю с wireshark, первые пакеты в открытом тексте
Проблема 2: в App.config клиента есть автоматически сгенерированный идентификационный тег в виде "jeremy@mycompany.com". Если я оставлю это поле пустым, все будет отправлено открытым текстом. Если я удалю его, программа не будет работать.
Кто-нибудь может описать, что именно происходит во время рукопожатия? Я думал, что Kerberos выбирает билет в сервисе для аутентификации клиента. Но почему тогда это открытым текстом?
Я надеюсь, что кто-то сможет помочь.
Изменить: clientCredentialType, конечно, Windows с уровнем защиты: encryptAndSign
1 ответ
Хорошо, после многих исследований я обнаружил, что это произошло из-за несоответствия Kerberos NTLM.
Открытый текст, который я упомянул, - это рукопожатие между сервером и клиентом. Так что, если я использую Kerberos, в открытом тексте будут только некоторые символы, которые вызывают сервис. Если Kerberos тогда недоступен или если вы измените тэг идентификации, Kerberos возвращается к NTLM, который отвечает за гораздо более длительное рукопожатие и так далее по нескольким более открытым текстовым отрывкам. Теперь я заставил клиента использовать Kerberos со следующей строкой:
<endpointBehaviors>
<behavior>
<clientCredentials>
<windows allowNtlm="false"/>
</clientCredentials>
</behavior>
</endpointBehaviors>
Теперь в журналах безопасности Windows вы можете видеть, что аутентификация происходит через Kerberos.
Вот ссылки, которые помогли мне больше всего понять Kerberos и решить проблему:
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