Учетные данные веб-службы SharePoint

108
6

Я пытаюсь использовать стандартную веб-службу SharePoint GetWeb в кодировке формы InfoPath. Форма размещается как часть рабочего процесса, поэтому загружается внутри браузера с помощью служб форм. Поэтому он запускается с учетными данными текущего пользователя, зарегистрированного в SharePoint. Веб-сервис запускается, если пользователь находится в группе "Владелец" сайта, но он дает ошибку "HTTP 401 Unauthorized", если пользователь находится в группах Contributor или Reader. Я также использую веб-сервис GetLists сразу после этого, но он выполняется, если у пользователя есть разрешения Reader.


Я использую только вызов GetWeb, чтобы получить WebId, который требует вызов GetList в качестве параметра. Я обошел мою проблему с разрешениями, передав WebId в форму, противоположную форме, которую она ищет. Так что теперь все в порядке.


Однако я хотел бы знать, почему GetWeb требует более высоких разрешений и как/если это разрешение можно контролировать. Я не нашел документацию о разрешениях, которые требуются для разных веб-сервисов, не говоря уже о том, как вы их изменяете.


[ПРИМЕЧАНИЕ] Я не использую файлы подключения к данным по какой-то причине, но, спасибо, за то, что вы их вообще предложили.

спросил(а) 2009-03-24T20:08:00+03:00 11 лет, 8 месяцев назад
1
Решение
71

Вы можете устранить необходимость жесткого кодирования учетных данных веб-сервиса, управляя данными веб-службы в библиотеках подключения данных. Файл UDCX включает в себя схему для хранения учетных данных веб-службы, а сам файл может централизованно управляться из центра администрирования.


Использование файлов подключения к данным в центральном администраторе:
http://aidangarnish.net/blog/post/2008/11/Using-centrally-managed-SharePoint-data-connection-files-with-InfoPath-2007.aspx

Веб-сервис credentoils по адресу (7):
http://sheetal-d.spaces.live.com/Blog/cns!237C3DEA7120098B!658.entry

ответил(а) 2009-03-24T21:10:00+03:00 11 лет, 8 месяцев назад
41

Если вы используете клиент sharepoint для GetList. Затем вы можете посмотреть код ниже.

ClientContext context = new ClientContext(siteURL);
UserInfo user = new UserInfo();
SecureString passWord = new SecureString();
foreach (char c in user.Pwd.ToCharArray()) passWord.AppendChar(c);
context.Credentials = new SharePointOnlineCredentials(user.UserName, passWord);
//context.Credentials = new System.Net.NetworkCredential(userName, password);
Web web = context.Web;
List list = web.Lists.GetByTitle(documentLibraryName);

CamlQuery query = new CamlQuery();
ListItemCollection items = list.GetItems(query);
context.Load(items);
context.ExecuteQuery();

ответил(а) 2015-09-21T10:19:00+03:00 5 лет, 2 месяца назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема