Ответ 1
В этом сообщении блога объясняется, что Microsoft не поддержала этот сценарий -
http://blogs.microsoft.co.il/blogs/applisec/archive/2011/12/12/wcf-routing-and-message-security.aspx
У меня есть служба WCF с безопасностью сообщений Аутентификация.
Я хочу настроить службу маршрутизации для балансировки нагрузки.
По какой-то причине это не работает, я включил includeExceptionDetailInFaults, чтобы увидеть исключения, поэтому в клиенте я вижу:
Сертификат клиента не предоставляется. Укажите сертификат клиента в ClientCredentials.
Кажется, что сертификат не перенаправлен из службы router- > .
В настоящее время клиент/маршрутизатор/служба находится на одном компьютере, поэтому у меня есть все сертификаты, но если я развожу их на другой машине, у маршрутизатора должны быть закрытые ключи?
Кроме того, если я хочу установить незащищенное соединение между маршрутизатором и сервисом (разгрузить безопасность), как я могу предоставить идентификатор вызывающего?
ИЗМЕНИТЬ: Для всех клиентов/маршрутизаторов (как сервера, так и клиента)/сервера система безопасности настроена одинаково:
<security mode="Message">
<message clientCredentialType="Certificate" negotiateServiceCredential="false"
algorithmSuite="Default" establishSecurityContext="false" />
</security>
В этом сообщении блога объясняется, что Microsoft не поддержала этот сценарий -
http://blogs.microsoft.co.il/blogs/applisec/archive/2011/12/12/wcf-routing-and-message-security.aspx
Есть много статей, в которых говорится, что Microsoft не поддерживает этот сценарий, и это правда.
Сертификат клиента не предоставляется. Укажите клиентский сертификат в ClientCredentials.
Я видел эту ошибку, когда сертификат службы не соответствует имени домена хоста.
Если вы все еще видите эту проблему, можете опубликовать некоторые записи о своей конфигурации?
1) Сначала попробуйте установить сертификат на стороне клиента по коду.
ChannelFactory<IService1> factory =
new ChannelFactory<IService1>("Service1_Endpoint");
factory.Credentials.ServiceCertificate.SetDefaultCertificate(
System.Security.Cryptography.X509Certificates.StoreLocation.CurrentUser,
System.Security.Cryptography.X509Certificates.StoreName.My,
System.Security.Cryptography.X509Certificates.X509FindType.FindBySubjectName,
"<SeriveCerificateName>");
Если у вас действительно есть проблема с сертификатом, вы быстро получите исключение при запуске приложения.
2) Если нет исключения, проверьте чеки сертификата службы на обеих сторонах.