Клиент WCF с базовой аутентификацией и аутентификацией сертификата клиента

Я пытаюсь интегрироваться с конечной точкой веб-службы, которая требует базового и клиентского сертификатов для аутентификации с использованием WCF. Я пробовал разные настройки, основанные на предложениях в Интернете, но все же получаю сообщение «Не удалось установить безопасный канал для SSL / TLS с полномочиями XXXXX». Сервер использует хорошо известный центр сертификации, который уже доступен в хранилище сертификатов Windows. В коде я успешно добавляю ClientCredentials.UserName.UserName, ClientCredentials.UserName.Password и ClientCredentials.ClientCertificate.Certificate.

1)

<security mode="TransportWithMessageCredential">
     <transport clientCredentialType="Basic"/>
 </security>

Результат: «Не удалось установить безопасный канал для SSL / TLS с полномочиями XXXXX».

2)

<security mode="TransportWithMessageCredential">
     <transport clientCredentialType="Basic" />
     <message clientCredentialType="Certificate" />
 </security>

Результат: Результат: «Не удалось установить безопасный канал для SSL / TLS с полномочиями XXXXX».

3)

<security mode="Transport">
            <transport clientCredentialType="Certificate"/>
             <message clientCredentialType="UserName" />
  </security>

Результат: HTTP-запрос неавторизован со схемой аутентификации клиента «Анонимный». Заголовок аутентификации, полученный от сервера, был «Basic realm =" Realm "». ---> System.Net.WebException: удаленный сервер возвратил ошибку: (401) неавторизованный.

Как прикрепить сертификат клиента с помощью обычной проверки подлинности, поскольку сервер ожидает обычной проверки подлинности на основе ошибки, возвращаемой при установке clientCredentialType как «Сертификат».

Примечание. Используя SOAPUI, я могу успешно подключиться к серверу.


person Noor Mohamed    schedule 01.08.2018    source источник
comment
См. Проекты кода: codeproject.com/Articles / 429144 /   -  person jdweng    schedule 01.08.2018
comment
Спасибо за ответ, но как эта статья связана с моим запросом?   -  person Noor Mohamed    schedule 01.08.2018
comment
Просто показываю рабочий пример SSL. Если вы добились успеха с SOAPUI, я бы использовал сниффер, например wirehark или fiddler, и сравнил бы результаты SOAPUI с вашим приложением. Обычно добавление отсутствующего заголовка http решает проблему.   -  person jdweng    schedule 02.08.2018


Ответы (1)


Я заменил ссылку на веб-службу 2.0 вместо ссылки на службу WCF для отправки запроса как с базовой, так и с клиентской аутентификацией, и он работал, как ожидалось.

Примечание. Веб-ссылка - устаревшая устаревшая модель.

person Noor Mohamed    schedule 03.08.2018