Отправка сертификата клиента через WCF приводит к ошибке: «HTTP-запрос был запрещен при использовании схемы аутентификации клиента« Аноним »» - PullRequest
0 голосов
/ 04 марта 2020

У меня есть служба IIS ASP. NET, которая должна выполнять вызовы к другой службе IIS через https WCF, где другой службе требуется сертификат клиента.

После данного руководства , я добавил следующий код (на стороне источника):

  WSHttpBinding binding = new WSHttpBinding();      
  binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Certificate;      
  binding.Security.Mode = SecurityMode.Transport;

  m_wcfProxy = new IISSecurityServices.SecurityServiceClient();
  m_wcfProxy.Endpoint.Binding = binding;
  m_wcfProxy.Endpoint.Address = new EndpointAddress(m_wcfProxyEndpointAddress);            
  m_wcfProxy.ClientCredentials.ClientCertificate.Certificate = new X509Certificate2("D:\\0\\SslClientCert.cer"); ;

Единственное отличие, приведенное выше, заключается в том, что я загружаю сертификат (который является тем же сертификатом, который используется целевой службой) из file.

Теперь, когда я звоню, я получаю следующую ошибку:

HTTP-запрос был запрещен с помощью схемы аутентификации клиента 'Anonymous'

Я не вижу, что я здесь упустил.

У кого-нибудь есть идеи, почему это не работает для меня?

Заранее спасибо

1 Ответ

0 голосов
/ 04 марта 2020

Обратите внимание на этот параграф этой статьи.

В этом сценарии служба размещается в Inte rnet Information Services (IIS), который настроен с использованием протокола SSL. Служба настроена с сертификатом SSL (X.509), чтобы клиенты могли проверять подлинность сервера. Клиент также настроен с сертификатом X.509, который позволяет службе проверять личность клиента. Сертификат сервера должен быть доверенным клиентом, а сертификат клиента должен быть доверенным сервером.

На стороне сервера для размещения WCF с защитой транспорта требуется привязка Https в привязке сайта IIS модуль, а именно, привязать сертификат к порту, а затем выставить службу с этим портом. Кроме того, обратите внимание, что нам следует установить sh доверительные отношения между серверной и клиентской сторонами, то есть локально установить сертификат друг друга в Trusted Root Certification Authorities, если вы используете самозаверяющий сертификат.
Не стесняйтесь, дайте мне знать, если проблема все еще существует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...