我们有一个Xamarin Android应用程序,它使用WCF与服务器对话。 (“仅使用REST。我同意。出于这个问题的目的,假设我们必须将WCF用于所谓的“传统原因”。)
一切正常。
但是,现在我们有一个客户,他希望Android设备在与服务器对话时使用客户端证书。我发现我必须在Xamarin中构建一些example code:
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
)使用特定的客户端证书?
我们在Android设备上安装了客户端证书。如果有帮助,它也可以作为单独的.pfx
文件(我们的应用程序可以读取文件系统)提供。另外请注意,我对在PCL中不起作用的解决方案持开放态度。