1

Мне нужно получить доступ к веб-сервисам одного из наших партнеров. Их услуги защищены как сертификатом клиента, так и базовой аутентификацией. Я использую WCF с BasicHttpBinding.Клиент WCF с сертификатом клиента и базовой аутентификацией

Я могу подключить сертификат, используя уровень безопасности на уровне транспорта. Я знаю, что cert работает, потому что я больше не получаю ошибку 403, но я получаю 401, потому что я не могу передавать учетные данные вместе с транспортом. Из того, что я вижу, у меня может быть только один вид транспортной безопасности.

Как я могу это достичь?

<security mode="Transport"> 
    <transport type="Certificate" /> 
    <transport type="Basic" /> 
</security> 

Благодаря

+0

мольбы показать клиентский код пытается получить доступ к службе WCF ... – Yahia

+0

Вы можете уточнить конфигурацию службы. Используют ли они WCF? Если да, можете ли вы показать web.config или код конфигурации службы? –

+0

Является ли конфигурация с использованием SSL (не взаимного SSL) на транспортном уровне с базовой аутентификацией плюс шифрование уровня сообщений с использованием сертификата клиента? –

ответ

3

ли вы пытались передать мандат на уровне сообщений. Ваш конфиг должен выглядеть следующим образом:

<security mode="Transport"> 
     <transport clientCredentialType="Certificate" proxyCredentialType="None" realm="" /> 
     <message clientCredentialType="UserName" algorithmSuite="Default" /> 
</security> 

, а затем в коде

WebServiceProxy objClient = new WebServiceProxy(); 
    objclient.ClientCredentials.ClientCertificate.SetCertificate(StoreLocation.CurrentUser, StoreName.My, X509FindType.FindBySubjectName, "clientCert"); 
objClient.ClientCredentials.UserName.UserName = "username"; 
objClient.ClientCredentials.UserName.Password = "Password"; 
+3

Вопрос о том, что он использовал Basic Authenticatin - поэтому уровень транспорта, а не уровень сообщения. –

 Смежные вопросы

  • Нет связанных вопросов^_^