У нас есть приложение Xamarin Android, которое общается с сервером, используя WCF . («Просто используйте REST.» Я согласен. Для целей этого вопроса предположим, что мы должны использовать WCF для того, что я назову «устаревшими причинами».)
Это все работает.
* 1006 Однако теперь у нас есть клиент, который хочет, чтобы устройства Android использовали клиентские сертификаты при обращении к серверу. Я нашел
пример кода , который мне нужно построить в Xamarin:
BasicHttpBinding binding = new BasicHttpBinding();
binding.Security.Mode = BasicHttpSecurityMode.Transport;
binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Certificate;
var endpoint = new EndpointAddress(serviceURL);
var client = new MyAppCommServiceClient(binding, endpoint);
// Specify a certificate to use for authenticating the client.
client.ClientCredentials.ClientCertificate.SetCertificate(
StoreLocation.CurrentUser,
StoreName.My,
X509FindType.FindBySubjectName,
certSubjectName);
Проблема в том, что при выполнении этого вызова SetCertificate()
выдает System.NotImplementedException
.
Мой вопрос таков: есть ли в Xamarin Android альтернативный способ сообщить клиенту WCF (производному от System.ServiceModel.ClientBase
) использовать указанный c клиентский сертификат?
Мы установите сертификат клиента на устройстве Android. Он также доступен в виде отдельного файла .pfx
(и наше приложение может читать файловую систему), если это поможет. Также обратите внимание, что я открыт для решений, которые не будут работать в PCL.