Методы работы с повышенными привилегиями в MOSS Publishing Site - PullRequest
1 голос
/ 19 февраля 2009

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

Ожидаемый результат: Оба метода дают полный доступ ко всему контенту в текущем семействе сайтов

Фактический результат: При использовании метода № 1

происходит корректировка безопасности
  • Метод № 2 работает правильно для извлечения контента из других веб-сайтов, но метод № 1 не работает.

  • Оба метода предоставляют доступ через Интернет в режиме Anonymous , и оба работают для администратора сайта учетных записей.

  • Разница возникает для Иерархических менеджеров , Утверждающих и Редакторов . Метод № 1 не предоставляет доступ администратора через Интернет.

Метод № 1

using (SystemOperation op = new SystemOperation())
{ 
    //Do an operation that requires retrieving across webs
}

public class SystemOperation : IDisposable
{
    private WindowsImpersonationContext ctx;

    public SystemOperation()
    {
        if (!WindowsIdentity.GetCurrent().IsSystem)
        {
            ctx = WindowsIdentity.Impersonate(System.IntPtr.Zero);
        }
    }

    public void Dispose()
    {
        this.Dispose(true);
        GC.SuppressFinalize(this);
    }

    protected virtual void Dispose(bool all)
    {
        if (ctx != null)
        {
            ctx.Undo();
        }
    }
}

Метод № 2:

   Microsoft.Sharepoint.SPSecurity.RunWithElevatedPrivileges(delegate()
    {
        //Do an operation that requires retrieving across webs
    });

1 Ответ

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

RunWithElevatedPrivileges предоставляет две отдельные привилегии. Во-первых, он повышает личность пользователя Windows до учетной записи AppPool, во-вторых, он также повышает удостоверение учетной записи SharePoint \ System, которая является встроенной учетной записью безопасности, обеспечивающей полный контроль (в смысле SharePoint). Внутренняя учетная запись SharePoint используется при создании объектов SP (например, SPSite).

Таким образом, в основном это будет зависеть от того, как вы строите свой код и когда создаете свои объекты, которые влияют на работу привилегий.

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