В Windowsservice с делегированным Windowsidentity мы получаем доступ к Sharepoint 2016 или 2019 с помощью объектной модели сервера Sharepoint (SSOM), расположенной в «Microsoft.SharePoint.dll». Служба Windows работает. NET 4.5.1, а SharePoint находится в режиме на основе утверждений. Код для доступа к SharePoint выглядит следующим образом:
using (ServiceSecurityContext.Current.WindowsIdentity.Impersonate())
{
using (SPSite archive = new SPSite(siteId))
using (SPWeb workArea = archive.OpenWeb(webId))
{
SPList list = workArea.Lists[listId];
SPFile spFile = RetrieveSPFileFromSPList(list, fileId);
}
}
Пользователи windows олицетворяют себя и объекты SharePoint создаются. Это прекрасно работает для Siteadministrator, который является обычным пользователем windows. Если олицетворенный пользователь является другим пользователем домена f.ex. называется "домен \ пользователь1", доступ к SharePoint не разрешен. SharePoint знает «домен \ пользователь1» как пользователь windows, например «i: 0 # .w | домен \ пользователь1». Так как же сделать переключение контекста, которое может представлять windows пользователя "домен \ пользователь1" как "i: 0 # .w | домен \ пользователь1" для доступа к объектам на стороне сервера sharepoint?