Добавить базовую аутентификацию в заголовок запроса SOAP - WebService - PullRequest
0 голосов
/ 09 декабря 2011

У меня есть сборка прокси c # из wsdl. Я пытаюсь добавить базовую аутентификацию в заголовок запроса. Веб-сервис, который я пытаюсь вызвать, находится не в c #. (php может быть)

С помощью fiddler я вижу, что "заголовок авторизации отсутствует"

И результат моих звонков: неверное имя пользователя / пароль

Вот что я добавил в свой прокси

protected override System.Net.WebRequest GetWebRequest(Uri uri){
    System.Net.HttpWebRequest request;
    request = (System.Net.HttpWebRequest)base.GetWebRequest(uri);
    if (PreAuthenticate){
       System.Net.NetworkCredential networkCredentials =
       Credentials.GetCredential(uri, "Basic");
       if (networkCredentials != null)
       {
           byte[] credentialBuffer = new System.Text.UTF8Encoding().GetBytesnetworkCredentials.UserName + ":" + networkCredentials.Password);
           request.Headers["Authorization"] = "Basic" + Convert.ToBase64String(credentialBuffer);>
       }
       else
       {
           throw new ApplicationException("No network credentials");
      }
   }
   return request;
}

1 Ответ

0 голосов
/ 09 декабря 2011

У меня была похожая проблема некоторое время назад, если вы можете использовать WCF, я бы предложил использовать это, но если вам, как и мне, это не разрешено, вы можете использовать эту реализацию. http://geekswithblogs.net/SunnyCoder/archive/2009/03/15/username-password-amp-ws-security-with-silverlight.aspx

Если вы попытаетесь создать собственное xml-приложение, вы столкнетесь с самыми разными проблемами. Используйте это только если вы не можете использовать WCF. Silverlight поддерживает аутентификацию через HTTPS. Я считаю, что без WCF, но аутентификация простого HTTP была перенесена в WCF.

...