29 июл. 2014 г.

Удаленный сервер возвратил ошибку: (407) Требуется проверка подлинности посредника

      Если вам необходимо выполнить запрос информации для отправки по определенному URI, вам необходимо воспользоваться классом «WebRequest». При выполнении запроса через «WebRequest» используются настройки прокси, прописанные в Internet Explorer. Если прокси-сервер использует Active Directory-авторизацию, то необходимо указать в запросе использование разрешений пользователя по умолчанию. Для этого необходимо присвоить свойству «Proxy.Credentials», системные учетные данные приложения из свойства «System.Net.CredentialCache.DefaultCredentials». Код инициализации представлен ниже.
System.Net.WebRequest request = 
    System.Net.WebRequest.Create("http://адрес сайта");
//Указываем системные учетные данные приложения.
request.Credentials = 
    System.Net.CredentialCache.DefaultCredentials;
//Указываем сетевые учетные данные текущего контекста безопасности.
request.Proxy.Credentials = 
    System.Net.CredentialCache.DefaultCredentials;
      Если учетные данные не указаны, вы получите сообщение об ошибке «Удаленный сервер возвратил ошибку: (407) Требуется проверка подлинности посредника.»:
Свойство DefaultCredentials представляет системные учетные данные для текущего контекста безопасности, в котором выполняется приложение. Для приложения на стороне клиента это обычно учетные данные Windows (имя пользователя, пароль и домен), относящиеся к пользователю, запустившему приложение (Microsoft MSDN).
      Так же вы можете указать свои учетные данные при подключении, для этого необходимо инициализировать новый экземпляр класса «System.Net.NetworkCredential» с тремя заданными параметрами:
  • userName - Имя пользователя, связанное с учетными данными. 
  • password - Пароль для имени пользователя, связанный с учетными данными.
  • Domain- Домен, связанный с этими учетными данными.
request.Proxy.Credentials =
 new System.Net.NetworkCredential(@"userName", @"password ", "Domain");
      Ниже приведен пример отправки интернет-запроса сайту «http://www.csharpcoderr.com/» и получение значения true, если и клиент, и сервер прошли проверку подлинности; в противном случае — false.
System.Net.WebRequest request = 
    System.Net.WebRequest.Create("http://адрес сайта/");
//Указываем системные учетные данные приложения.
request.Credentials = 
    System.Net.CredentialCache.DefaultCredentials;
//Указываем сетевые учетные данные текущего контекста безопасности.
request.Proxy.Credentials = 
    System.Net.CredentialCache.DefaultCredentials;
//Получаем ответ на интернет-запрос.
System.Net.WebResponse response = request.GetResponse();
//Выводим полученный ответ от сервера в сообщении.
MessageBox.Show(
//Получаем значение true, если и клиент, и сервер прошли 
//проверку подлинности; в противном случае — false.
    (response.IsMutuallyAuthenticated == true) ?
                 "Аутентификация не выполнена" :
                    "Аутентификация выполнена"); 
//Если объект ответа больше не нужен, 
//его следует закрыть методом Close().
response.Close(); 
      Результатом выполнения данного примера будет сообщение со статусом выполнения аутентификации.

Комментариев нет:

Отправить комментарий

Большая просьба, не писать в комментариях всякую ерунду не по теме!