У меня есть проблема, которая немного сводит меня с ума: использование UserProfileManager в качестве неавторизованного пользователя.
Проблема: у пользователя нет прав «Управление профилями пользователей», но я все еще хочу использовать UserProfileManager. Идея использования SPSecurity.RunWithElevatedPrivileges, похоже, не работает, поскольку UserProfileManager авторизует SSP, как кажется.
SPSecurity.RunWithElevatedPrivileges(delegate()
{
using (SPSite site = new SPSite(inputWeb.Site.ID))
{
ServerContext ctx = ServerContext.GetContext(site);
UserProfileManager upm = new UserProfileManager(ctx,true);
UserProfile u = upm.GetUserProfile(userLogin);
DepartmentName = u["Department"].Value as string;
}
});
Это по-прежнему не работает в строке «новый UserProfileManager» с исключением «У вас должны быть права администратора на управление профилями пользователей для использования режима администратора».
Насколько я понял, RunWithElevatedPrivileges возвращается к AppPool Identity. WindowsIdentity.GetCurrent (). Name возвращает "NT AUTHORITY \ network service", и я дал этой учетной записи права на управление профилями пользователей - безуспешно.
site.RootWeb.CurrentUser.LoginName возвращает SHAREPOINT \ system для сайта, созданного в RunWithElevatedPrivileges, который не является действительной учетной записью Windows ofc.
Есть ли вообще способ сделать это? Я не хочу давать всем пользователям права «Управление профилями пользователей», я просто хочу получить некоторые данные из профилей пользователей (отдел, страна, прямые отчеты). Любые идеи?