Вот исчерпывающий ответ, который я наконец нашел, протестировал и подтвердил.
A. Мой WCF-клиент использовал для динамического построения EndPoint.Address, как указано ниже
EndPointAddress myEdpintAddress = new EndPointAddress(stringURL);
Но в случае безопасного транспорта (net.tcp) он должен быть инициализирован следующим образом
EndPointAddress myEdpintAddress = new EndPointAddress(new UrRL(string), myEndPointIdentity
)
Без параметров EndPointIdentity свойство Identity в объекте EndPointAddress имеет значение NULL и создает ошибку «... имя целевого субъекта неверно ...» на стороне сервера.
B. Наш контроллер домена поддерживает аутентификацию Kerberos и Ntlm. После выполнения вышеизложенного обычно на стороне клиента есть четыре сценария конфигурации для привязки net.tcp, если безопасность отличается от «None», а служба WCF работает как учетная запись домена:
Нет <identity>
элементов в указанной конечной точке клиента - сбой вызова WCF
<identity>
предоставляется элемент, но с пустым значением для элементов dns, userPrioncipalName или servicePrincipalName - вызов WCF выполнен успешно, но используется проверка подлинности Ntlm
<identity>
элемент, снабженный значением a для dsn или SPN - вызов WCF успешен; Сервис использует Ntlm для аутентификации.
<identity>
элементу предоставлено правильное значение для upn - вызов WCF успешен; Сервис использует Kerberos для аутентификации. Неверное или отсутствующее значение для проверки подлинности Ntlm триггера upn
Спасибо.