У меня есть проект в производстве, который похож на ваш сценарий. У меня есть конечные точки службы Windows, использующие netTCPBinding, и я использовал сертификаты x509 ... хотя в моем случае целью было зашифровать как транспортный, так и уровень сообщений, так как я пересекал ненадежные границы безопасности. Меня меньше волновало обеспечение аутентификации / авторизации, кроме наличия сертификата.
По аналогии с вашими сценариями в интрасети (я предполагаю), я имел полномочия на сервер и клиентские машины во время установки ... или, по крайней мере, мог диктовать некоторые условия установки.
Вместо того, чтобы покупать сертификаты x509 и обременять клиента этими расходами, я решил взять свой собственный. Мы настроили один из наших серверов Win2003 в качестве CA, выпустив собственный сертификат Certification Authority. Затем мы создали сертификат x509 для сервера, а также отдельные сертификаты x509 для клиентов.
Сертификаты клиента и сервера были установлены как на клиенте, так и на сервере (при необходимости) в хранилище персональных пользователей на уровне компьютера. Мы также установили наш сертификат CA непосредственно в раздел Trusted Root Certification Authorities, что сделало наши сертификаты клиента и сервера доверенными.
Поскольку я меньше интересовался аутентификацией / авторизацией, я не знаю, что рекомендовать в качестве наилучшей практики при работе с привязкой сертификатов к отдельным пользователям и переходе на более детальный, чем на уровне компьютера (моим решением была служба Windows для службы Windows общение - полностью без присмотра). Я думаю, вам понадобится сертификат для каждого пользователя, который будет установлен в их личном хранилище в MMC сертификатов. Реализация во время выполнения будет зависеть от того, как вы настроите WCF для поиска сертификата, поэтому это должно быть довольно просто.
На протяжении всего процесса я сильно полагался на то, что узнал из этой замечательной статьи CodeProject: Защита служб WCF с помощью сертификатов . Он проведет вас через создание / установку сертификатов. Пример приложения WCF размещается на IIS, но мне удалось довольно легко перевести разделы конфигурации из web.config в app.config.
В моем случае я предоставил веб-интерфейс для запроса сертификатов в Win2003 самой сети, чтобы клиент мог запрашивать сертификаты непосредственно в будущем. У нас есть контроль одобрения, поэтому он работает хорошо. У меня еще не было необходимости создавать новые сертификаты, поэтому я не могу сказать, сколько трения это повлечет за собой.