Олицетворение
Дата последнего изменения: 14 апреля 2010 г.
Применимо к: SharePoint Foundation 2010
Олицетворение — это новая возможность Windows SharePoint Services 3.0, которая позволяет выполнять действия от имени другого пользователя. Олицетворение может использоваться в ситуациях с отложенными операциями, то есть когда соответствующий рабочий процесс уже завершен. Например, может потребоваться обновить что-либо асинхронно от имени пользователя, хотя тот уже долгое время не пользовался данным веб-сайтом.
Примечание |
---|
Сведения о том, как приостановить олицетворение, см. в разделе Устранение задержки олицетворения вызывающего пользователя. |
Когда сайт SharePoint создается программным способом с использованием пространства имен Microsoft.SharePoint, можно представить токен пользователя, который позволяет создавать объекты в контексте конкретного пользователя. Для олицетворения этого пользователя достаточно указать его токен, полученный из объекта Microsoft.SharePoint.SPUser. Токен пользователя, SPUserToken, представляет собой двоичный объект, содержащий идентификатор пользователя и сведения о его членстве в доменных группах.
Это позволяет использовать конструктор Microsoft.SharePoint.SPSite для создания экземпляра объекта семейства сайтов, который действует так, словно изменения вносит именно этот пользователь.
Обычно хранение учетных данных пользователей не требует каких-либо чрезвычайных мер безопасности. Эти учетные данные можно просмотреть с помощью программы, запускаемой с привилегиями системной учетной записи или с привилегиями соответствующего пользователя.
Следует иметь в виду, что срок действия токена пользователя составляет обычно около 24 часов. Если планируется выполнять длительные, отложенные операции, может потребоваться сохранять идентификатор пользователя в базе данных и извлекать его позднее. Однако из-за этого производительность может снижаться, поскольку понадобится дополнительное время на извлечение информации из базы данных. Это не потребуется, если известно, что операция будет лишь «слегка асинхронной», например если она запускается через пять минут.
Поскольку в этом случае требуется двустороннее доверие, имейте также в виду, что олицетворение недоступно, если веб-интерфейс, взаимодействующий с базой данных SharePoint, находится на сервере, размещенном между двумя другими сетями. В таком сценарии сервер веб-интерфейса имеет только одностороннее доверие. Кроме того, идентификаторы групповой безопасности (SIDS) не фильтруются, что может вызвать нарушение политики фильтрации SID между доменами.
Хотя олицетворение является новой мощной технологией управления безопасностью, его следует применять с осторожностью, следя за тем, чтобы нежелательные действия не выполнялись пользователями, которые не должны иметь возможности использовать олицетворение.
Примечание |
---|
Чтобы продолжать работать на сайте после после выполнения операции олицетворения в программе, необходимо заново создать экземпляр объекта SPSite. |
Управление токенами пользователей
SharePoint извлекает сведения о токене пользователя из базы данных SharePoint. Если пользователь никогда не посещал сайт или токен был создан более 24 часов назад, SharePoint генерирует новый токен пользователя, пытаясь обновить список групп, к которым принадлежит пользователь.
Если учетная запись пользователя является учетной записью NT, SharePoint использует интерфейс AuthZ для запроса свойства TokenGroups в службе каталогов Active Directory. Это может не получиться, если SharePoint работает в режиме экстрасети и не имеет разрешения на запрос этого свойства в Active Directory.
Если учетная запись представляет авторизованного пользователя, SharePoint запрашивает в ASP.NET RoleManager сведения о всех ролях, назначенных этому пользователю. Этот запрос может не дать результата, если для текущего исполняемого файла отсутствует подходящий файл .config.
Если SharePoint не может получить из Active Directory или <roleManager> сведения о принадлежности пользователя к группам, новый токен будет содержать только уникальный идентификатор безопасности пользователя (SID). Исключение при этом не генерируется, но производится запись в журнал ULS сервера. Новый токен записывается также в базу данных SharePoint, чтобы он не создавался повторно в течение 24 часов.
После того как SharePoint получит свежий токен из базы данных SharePoint или сгенерирует новый, метка времени будет установлена на текущее время и возвращена вызывающей стороне. Это гарантирует, что токен будет оставаться свежим 24 часа.
После возвращения объекта SPUserToken вызывающей стороне та должна проследить, чтобы токен не использовался после истечения срока его действия. Можно написать вспомогательную программу для отслеживания срока действия путем записи времени получения токена и сравнения истекшего времени со значением SPWebService.TokenTimeout.
Если для создания веб-сайта SharePoint используется недействительный токен, генерируется исключение. По умолчанию срок действия токена составляет 24 часа. Доступ к нему производится с помощью свойства SPWebService.TokenTimeout.
Для получения и установки значения срока действия токена можно также использовать команду Stsadm. Следующая команда возвращает значение для токена пользователя:
stsadm -o getproperty -propertyname token-timeout
Результат имеет вид:
<Property Exist="Yes" Value="1440" /> // 1440 minutes is 24 hours
Следующая команда устанавливает значение для токена пользователя:
stsadm -o setproperty -propertyname token-timeout -propertyvalue 720