Почему я получаю UnauthorizedAccessException с некоторыми удостоверениями пула приложений, если я хочу использовать SPSiteCollection.Add в Sharepoint 2010? - PullRequest
2 голосов
/ 15 декабря 2010

История вопроса заключается в том, что моей текущей задачей является разработка страницы приложения, которая позволяет пользователям создавать семейства сайтов.Свойства семейства сайтов читаются из элемента списка.Мое решение работает в большинстве случаев.Тем не менее, существует одна конфигурация идентификаторов пула приложений, в которой он генерирует отказ в доступе, и я хотел бы понять, почему это происходит.

(очень) урезанная версия моего кода выглядит так:

SPSecurity.RunWithElevatedPrivileges(delegate { try 
{
  SPWebApplication webApp = this.Web.Site.WebApplication;
  SPSiteCollection siteColl = webApp.Sites;

  SPSite newSite = siteColl.Add(mngPath + siteUrl, siteName, siteDesc, LocaleId, 
                                null, primarySiteAdmin, String.Empty, 
                                String.Empty));
});

UnauthorizedAccessException генерируется, когда идентификаторы задаются следующим образом:


Центр администрирования SharePoint v4 -> localdomain \ adminaccount

SharePoint - 80 -> NetworkService


Все остальные комбинации NetworkService и domain \ adminaccount работают.У кого-нибудь есть объяснение?

ОБНОВЛЕНИЕ

Я предполагаю, что вам необходимо запустить пул приложений sharepoint, используя того же пользователя, что и пул приложений центра администрирования, чтобы иметь достаточные права на БД.Но это по-прежнему не объясняет, почему он работает в следующей конфигурации:


Центр администрирования SharePoint v4 -> NetworkService

SharePoint - 80 -> localdomain \ adminaccount


Кстати, еще один вопрос о SA предоставляет решение (и некоторые подробности проблемы).См. Разрешение на предоставление нового семейства сайтов с помощью рабочего процесса .

Ответы [ 3 ]

2 голосов
/ 15 декабря 2010
Код

в RunWithElevatedPrivileges выполняется с использованием учетных данных учетной записи apppool веб-приложения, под которым выполняется ваш код. Рекомендуется всегда использовать учетные записи домена службы для пула приложений. В вашем случае одна из учетных записей должна пропускать вход в некоторые из групп, созданных ресурсом sharepoint на вашем сервере, или может не иметь надлежащих прав на базу данных

1 голос
/ 16 декабря 2010

Хорошо, проблема была в правах доступа к БД для пользователя, выполняющего пул приложений веб-приложений хоста моей страницы приложения.Учетная запись фермы (очевидно) имеет права db_owner в базах данных AdminContent и _Config.Вот почему он работает, когда оба пула приложений запускаются с использованием одного и того же пользователя.

Причина, по которой он также работает с использованием следующей конфигурации ...


Центр администрирования SharePoint v4 ->NetworkService

SharePoint - 80 -> localdomain \ adminaccount


... означает, что моя локальная учетная запись администратора также имела права db_owner.Я понятия не имею, почему у него есть эти права, я никогда не возился с правами доступа к БД.Я только один раз установил учетную запись на ферме, но вскоре изменил.

0 голосов
/ 16 декабря 2010

Я бы посмотрел на следующее 1) привилегии для повышенного пользователя до цели contedb 2) предоставить привилегированным пользователям (учетная запись пула приложений хост-приложений веб-страницы) права dbcreator, если скрипт создает базы данных.

...