Обмен веб-сервисами x509 Certivicate
Я пытаюсь подключиться к веб-службам Exchange и отправить электронное письмо от имени пользователя через собственную веб-службу (ASP/WCF). Мой код работает нормально при запуске на настольном ПК, способном подключиться к серверу обмена, но при работе через Интернет доступ к серверу обмена невозможен, поэтому я пытаюсь подключиться через свой веб-сервер.
Я ищу способы входа в систему как другой пользователь без использования олицетворения веб-служб Exchange (как мне сказали, не использовать его, если нет абсолютно никакого другого способа) и без предоставления пользователем пароля.
У меня есть следующий код:
Dim service As New Microsoft.Exchange.WebServices.Data.ExchangeService(Microsoft.Exchange.WebServices.Data.ExchangeVersion.Exchange2007_SP1)
Dim emailAddress As String = "example@example.com"
System.Net.ServicePointManager.ServerCertificateValidationCallback = AddressOf CertificateValidationCallBack
Dim cert As New System.Security.Cryptography.X509Certificates.X509Certificate2(HttpContext.Current.Request.ClientCertificate.Certificate)
service.Credentials = New Microsoft.Exchange.WebServices.Data.WebCredentials(New System.Security.Cryptography.X509Certificates.X509Certificate())
service.UseDefaultCredentials = False
Но это не работает из-за Unable to cast object of type 'System.Security.Cryptography.X509Certificates.X509Certificate' to type 'System.Net.ICredentials'.
исключение.
Может ли кто-нибудь указать мне, как я могу использовать сертификат X509 для проверки подлинности с использованием веб-служб Exchange вместо использования сетевых учетных данных или имени пользователя / пароля
1 ответ
Я использовал это без ошибок
ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) => true;