Клиент WCF с клиентским сертификатом и базовой аутентификацией - PullRequest
1 голос
/ 21 ноября 2011

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

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

Как мне этого добиться?

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

Спасибо

1 Ответ

4 голосов
/ 21 ноября 2011

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

<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";
...