обмен веб-сервисами x509 Certivicate - PullRequest
3 голосов
/ 09 мая 2011

Я пытаюсь подключиться к веб-службам 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 Ответ

0 голосов
/ 09 июля 2013

Я использую это без ошибок

        ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) => true;
...