Разрешение модели объекта - PullRequest
2 голосов
/ 30 января 2009

Я пытаюсь подтвердить свои выводы о разрешениях.

Чтобы получить доступ к объектной модели SharePoint из консольного приложения или, в этом случае, к приложению WinForm, пользователь, запускающий приложение, должен иметь разрешение db_admin на базу данных контента для рассматриваемого веб-приложения.

Чтобы использовать Microsoft.SharePoint.Administration (например, вызов SPFarm.Local.Solutions.Add) внутри приложения ASP.NET, должно быть верно следующее:

  • Вызов должен быть заключен в RunWithElevatedPrivileges, как показано ниже:

SPSecurity.RunWithElevatedPrivileges (делегат () {код для запуска});

  • Пользователь, получающий доступ к странице ASP.NET, должен входить в группу администраторов фермы (страница работает с _layouts)

  • Пользователь в удостоверении пула приложений для рассматриваемого веб-приложения также должен входить в группу администраторов фермы

Эта информация выглядит правильно?

Ответы [ 4 ]

2 голосов
/ 30 января 2009

Да, но в коде веб-службы вы вызываете функциональный код с использованием привилегий RunWithElevated, что позволяет обойти идентификатор, с которым вы запускаете веб-службу, и вместо этого использует пользователя SPFarmAdmin для выполнения кода.

Либо разместите веб-службу в пуле приложений, который использует ту же учетную запись домена, что и ваш сайт центрального администратора, и разрешите анонимный доступ к веб-службе. Это будет безопасно только для внутреннего использования и будет означать, что веб-служба всегда имеет повышенные разрешения.

2 голосов
/ 30 января 2009

Редактировать: Вопреки комментарию Майкла, я предположил, что это приложение не будет запускаться из фермы SP.

Я бы не рекомендовал этот подход вообще, поскольку он не поддерживается методом использования OM OM.

Вам гораздо лучше написать веб-службу, которая находится в ферме SP и использует OM, а затем получить доступ к методам веб-службы для выполнения необходимых функций.

Вы также можете посмотреть на готовые веб-сервисы sharepoint.

RunWithElevatedPrivileges не будет работать в вашем сценарии. Я не думаю, что для этого требуется базовая неопределенность, к которой в случае выполнения кода в ферме SP относится идентификатор пула приложений SP, обычно это учетная запись администратора фермы.

Я рад, что все исправлено, но, конечно, в моей среде было бы неразумно инвестировать в нестандартный и неподдерживаемый подход к проблеме.

1 голос
/ 11 февраля 2009

Извиняюсь, хобби, я никогда не видел твоего ответа.

Если вы используете RunWithElevatedPermissions, то не имеет значения, от какого пользователя запускается веб-служба, поскольку вы effectivley олицетворяют учетную запись администратора фермы.

Кроме того, вы можете выполнить свою собственную олицетворение в веб-службе и выдать себя за любого пользователя, которого пожелаете.

По существу, если веб-служба работает в заданном пуле приложений, веб-служба будет работать с правами, от которых работает пул приложений. Это проясняет вещи?

1 голос
/ 30 января 2009

Да, для веб-службы потребуются надлежащие права доступа, но это проще контролировать, если веб-служба работает локально.

Однако, если, как вы говорите, приложения всегда работают на сервере, то использование RunWithElevatedPrivileges решит любые проблемы с разрешениями, поскольку вы фактически выполняете этот код как SPFarmAdmin (при условии, что удостоверение пула приложений настроено правильно). *

Примечание. Этот подход можно использовать либо с веб-службами на заказ, либо с клиентскими приложениями, такими как консольные приложения или формы Windows.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...