2015-02-25 4 views
0

Привет, У меня есть служба обслуживания (DotNet 4.0 WCF VS 2012) в HTTPS. Мой клиент будет прикреплять к нему сертификат (сертификат предоставляется мной (файл .cer)). Мне нужно вернуть сертификат из запроса и прочитать его информацию для его аутентификации. Серийный номер, Thumprint хранятся в БД, когда мне нужно чтобы проверить то же самое.Получение информации о сертификате из запроса в Restful POST

Я сделал SSL и передал файл cer клиенту.

Я использовал следующий код для чтения назад мой сертификат

начать C# код

если (OperationContext.Current.ServiceSecurityContext.AuthorizationContext.ClaimSets == NULL) бросить новый Exception ("Нет службы claimset не настроен неправильно");

 if (OperationContext.Current.ServiceSecurityContext.AuthorizationContext.ClaimSets.Count <= 0) 
       throw new Exception ("No claimset service configured wrong"); 



     var cert = ((X509CertificateClaimSet)OperationContext.Current.ServiceSecurityContext. 
     AuthorizationContext.ClaimSets[0]).X509Certificate; 

конец

C# код в приведенном выше коде я всегда получает claimSets.Count = 0.

ли какой-либо параметр, что нужно сделать в моем сервере web.config, я сделал следующие настройки в моей стороне сервера web.config

'режим безопасности = "Транспорт"' 'транспорт clientCredentialType = "None"' 'безопасность'

Пожалуйста, дайте мне знать. Отсутствуют ли какие-либо настройки на стороне клиента или на стороне сервера.

В стороне клиента я использую следующий код оных КВЖД на запрос

C# Код Start

X509Certificate2 cert = new X509Certificate2 ("C:\\xxxxxx.cer"); 

      System.Net.ServicePointManager.ServerCertificateValidationCallback = 
      delegate(Object obj, X509Certificate X509certificate, X509Chain chain, System.Net.Security.SslPolicyErrors errors) 
      { 
       return true; 
      }; 


      HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(xxxxx.Text.Trim()); 
      webRequest.ClientCertificates.Add(cert); 

C# код Конец

У меня не было каких-либо специальных настроек в моей файл клиента web.config.

ответ

0

Почему вы используете clientCredentialType="None", а не clientCredentialType="Certificate"?

Возможно также, что ваш клиент не отправит сертификат. Попробуйте включить трассировку сети в App.config на клиенте - instructions here. Это должно создать network.log с дополнительной информацией об отладке. Ищите SecureChannel записей в журнале.

Смежные вопросы