вторник, января 20, 2009

Что-то странное…

Который день пытаюсь разгадать загадку (в идеале, найти пути обхода) по отсутствию доступа к данным на Шарепойнт-узлах с разрешённым анонимным доступом (!?).

Вот тестовая консольная программка:

using System;
using GetListDataWCF.Lists_WS; // proxy for Lists.asmx
using System.Net;
using System.Xml;

namespace GetListDataWCF {
class Program {
static void Main(string[] args) {
if (args.Length > 0)
new Test().GetData(args[0]);
else
Console.WriteLine(
"Usage:{0} <url of site>",
typeof(Test).Assembly.ManifestModule.Name);
}
}
class Test {
public void GetData(string url) {
Lists lists = new Lists();
lists.Url = url.TrimEnd("/".ToCharArray()) +
"/_vti_bin/Lists.asmx";
lists.Credentials = CredentialCache.DefaultCredentials;
XmlNode tst =null;
try {
tst = lists.GetListCollection();
Console.WriteLine(string.Format(
"success: {0} bytes", tst.OuterXml.Length));
} catch (Exception err) {
Console.WriteLine(
string.Format("error: {0}", err.Message));
}
}
}
}
Программа обращается в узлу, УРЛ которого передан через параметр командной строки, вызывает метод GetListCollection() сервиса Lists.asmx и в случае успеха выводит размер ответа сервиса (содержимое ответа в данном случае неважно). Скомпилированная программа – здесь. Собственно, сам алгоритм из SDK, используется у меня (с вариациями) в разных программах и до недавнего времени (по крайней мере, до сентября-октября 2008 г.) выполнялся успешно для всех узлов, на которых разрешён анонимный доступ к данным.
Сейчас же результат работы программы причудливым образом зависит от пользователя, запустившего программу, и, может быть, ещё от каких-то факторов. Чаще всего результатом бывает “error: Сбой запроса с состоянием HTTP 401: Unauthorized.”, в случае Forms-аутентификации - “403, forbidden”. Случаи успешного выполнения запросов редки. smile_omg При этом таким поведением “отличаются” только сайты WSS-3, сайты WSS-2 отдают данные, как и ожидается.
Для проверки можно использовать узлы с адресами
http://sharepoint-community.ru:55555/ (Win-аутентификация),
http://sharepoint-community.ru/ (Forms-аутентификация),
http://www.sharepointcommunity.com/ (Win-аутентификация),
http://new.hse.ru/sites/ibs_test/ (версия WSS-2).
На всех узлах разрешён анонимный доступ к данным, успешное выполнение тестовой программы наблюдается только на последнем узле.smile_eyeroll

Сильно похоже на результат “усовершенствования” в деле безопасности… thumbs_down


Technorati Tags: