Во-первых, это сообщение обычно означает, что машины не находятся в одном домене и, следовательно, не могут общаться с помощью безопасности Windows. Два сервера находятся в одном домене?
Во-вторых, вы настроили конечную точку для использования безопасности Windows. Вы используете безопасность Windows не только на уровне сообщений, но и на уровне транспорта. И то и другое кажется излишним, вы, вероятно, просто хотите заняться транспортом.
В-третьих, все, что вы настроили, говорит: «Я хочу использовать аутентификацию Windows», но затем вы устанавливаете свойства UsernameClientCredentials в ClientCredentials. Эти свойства используются только для безопасности токена имени пользователя, а не Windows. Система безопасности Windows будет принимать идентификатор текущего потока и пересылать его дальше.
Если вы планируете использовать безопасность Windows, то вам необходимо:
- Запустите процесс публикации под одной учетной записью Windows, которую вы хотите, чтобы он связывался с подписчиками как.
- Использование олицетворения в процессе издателя для изменения контекста безопасности для каждого вызова (подробнее см. WindowsIdentity.Impersonate )
Прямо сейчас вы технически делаете # 1, даже если вы думаете, что делаете # 2, устанавливая свойства имени пользователя / пароля, так как они игнорируются.
Наконец, вот хорошая документация о том, как настроить привязки для различных сценариев аутентификации Windows:
Кроме этого, я не уверен, что еще я могу дать без дополнительной информации от вас. Если вы уточните свой вопрос, чтобы предоставить больше информации / ответьте на некоторые из моих вопросов, я с удовольствием пересмотрю свой ответ, чтобы, надеюсь, сделать его более полезным.