В очередной раз пытаюсь найти решение возникшей на ровном месте задачи получения информации с удалённых узлов Шарепойнта.
Собственно, особого разнообразия вариантов и нет – к неработающему способу обращения по механизму WebServices добавляется способ с использованием WCF. Смотрим, что получится:
1: string endPointUrl = url.TrimEnd("/".ToCharArray()) + "/_vti_bin/Lists.asmx";
2: ListsSoapClient client = new ListsSoapClient("ListsSoap", endPointUrl);
3: client.ClientCredentials.Windows.AllowedImpersonationLevel = TokenImpersonationLevel.Impersonation;
4: client.ClientCredentials.Windows.AllowNtlm = true;
5: client.ClientCredentials.Windows.ClientCredential = new NetworkCredential();
6: // from http://blogs.msdn.com/kaevans/archive/2009/03/10/calling-sharepoint-lists-web-service-using-wcf.aspx
7: client.Open();
8: XmlNode tst = null;
9: try {
10: tst = client.GetListCollection();
11: Console.WriteLine(string.Format("success: {0} bytes", tst.OuterXml.Length));
12: } catch (Exception err) {
13: Console.WriteLine(string.Format("error: {0}", err.Message));
14: }
Результат, собственно, тот же, что в предыдущем опыте – локальные узлы (находящиеся на том же компьютере, откуда делается запрос, и на компьютерах, виртуальных или физических, в локальной сети) отдают данные как ожидается, при обращении к удалённым узлам (заведомо имеющим NTLM аутентификацию и разрешённый анонимный доступ) получаем исключение с сообщением “The HTTP request is unauthorized with client authentication scheme 'Ntlm'. The authentication header received from the server was 'NTLM'”. Весьма информативно, да…
Раскопки показывают, что народ с этим тоже пытается как-то бороться (безуспешно, впрочем), а корень зла описан в KB-статье. Оказывается, это борются так с “отражёнными атаками”, которые неизвестно, бывают ли, но средство борьбы надёжное – фиг прорвёшься. Что называется, лес рубят – щепки летят.
В общем, фантазия иссякает… Осталось попробовать водрузить на сервер свой сервис и пытаться через него как-то передавать нужное, но это никак не поправит ситуации, когда удалённый сервер – чужой.
Комментариев нет:
Отправить комментарий