Sharepoint UserProfileManager без права управления профилями пользователей

У меня есть проблема, которая немного сводит меня с ума: использование 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.

Есть ли вообще способ сделать это? Я не хочу давать всем пользователям права «Управление профилями пользователей», я просто хочу получить некоторые данные из профилей пользователей (отдел, страна, прямые отчеты). Любые идеи?


person Michael Stum    schedule 17.09.2008    source источник


Ответы (4)


Разрешение, которое необходимо установить, фактически находится в Поставщике общих услуг.

  1. Перейдите в Central Admin
  2. Перейдите к поставщику общих услуг
  3. В разделе Профили пользователей и Мои сайты перейдите к разрешениям служб персонализации.
  4. Если учетная запись еще не существует, добавьте учетную запись, под которой работает домен приложения вашего сайта.
  5. Предоставьте этому пользователю разрешение Управление профилями пользователей.

Я заметил, что вы запускаете пул приложений под учетной записью сетевой службы. Я реализовал идентичную функцию на своем сайте; однако пул приложений размещался под учетной записью Windows. Однако я не уверен, почему это имеет значение.

person senfo    schedule 17.09.2008
comment
Это не работает для сетевой службы. В выходные я попробую, работает ли он с учетной записью домена. В любом случае рекомендуется использовать учетную запись домена, AFAIK, но моя машина разработки является автономным сервером. - person Michael Stum; 18.09.2008
comment
Интересный. Я вернусь к этому посту после выходных. Если по-прежнему не работает, оставьте мне еще один комментарий, и я посмотрю, что я смогу выкопать. Ваш код выглядит нормально, и я знаю, что это работает, потому что я делал это раньше. - person senfo; 19.09.2008

На самом деле мне удалось добиться этого двумя способами:

  1. Поместите код, использующий UserProfileManager, за слой веб-сервисов. Веб-служба должна использовать удостоверение пула приложений, у которого есть доступ к службам профилей пользователей.
  2. Используйте технику выдачи себя за другое лицо, описанную в следующей статье: http://www.dotnetjunkies.com/WebLog/victorv/archive/2005/06/30/128890.aspx
person Jan Tielens    schedule 02.10.2008

Спасибо за ответы. Одно предостережение: если вы запустите пул приложений как «Сетевая служба» вместо учетной записи домена, вы облажались.

Но опять же, рекомендуется в любом случае использовать учетную запись домена (на тестовом сервере я использовал сетевую службу, но после изменения ее на учетную запись домена все заработало).

person Michael Stum    schedule 02.10.2008
comment
Да, это то, к чему я пришел после целого дня попыток вернуть олицетворение в СЕТЕВОЙ СЕРВИС, а затем создать свойство профиля пользователя, все это заканчивается собственным методом, который не дает вам разрешения. - person axk; 30.10.2008

Вот ответ. Это глупая ошибка Microsoft, и есть исправление. Скачаю сейчас, чтобы протестировать.

http://support.microsoft.com/kb/952294/en-us

person Community    schedule 04.02.2009
comment
Спасибо. Собираюсь проверить и это в ближайшее время. - person Michael Stum; 04.02.2009