У нас есть проект Xamarin.Forms
, который в настоящее время компилируется для Android
, iOS
и UWP
с использованием .NET Standard 2.0 для общего проекта.
Обмен данными осуществляется через WCF
Договор на обслуживание.
Чтобы закрепить сертификат, мы реализовали следующий код в соответствии с примерами.Это работает правильно на Android
и iOS
после того, как вы убедитесь, что используете необходимые реализации HttpClient
в своих свойствах проекта.
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
ServicePointManager.ServerCertificateValidationCallback = ValidateServerCertificate;
private bool ValidateServerCertificate(object sender,
X509Certificate certificate,
X509Chain chain,
SslPolicyErrors sslPolicyErrors)
{
// Make sure we have a certificate to check.
if (certificate == null)
{
return false;
}
if (sslPolicyErrors != SslPolicyErrors.None)
{
return false;
}
return this.KnownKeys.Contains(certificate.GetCertHashString(),
StringComparer.Ordinal);
}
UWP
однако оказывается довольно упрямым.Я не могу заставить перезвонить на любой стадии связи.
Я также пытался реализовать наш собственный X509CertificateValidator
и передать его в конфигурацию WCF
, однако это тоже ничего не делает.
Вопросы
- Нужно ли / Могу ли я указать реализацию
HttpClient
в UWP
так же, как вы можете Android
и iOS
что это исправит? - Есть ли другой подход, который я сейчас упускаю?