1 votes

Méthodes de fonctionnement avec des privilèges élevés dans un site de publication MOSS

Je me demande pourquoi les deux méthodes énumérées ci-dessous ne donnent pas les mêmes résultats en matière de sécurité.

Résultat escompté : Les deux méthodes donnent un accès complet à tout le contenu de la base de données. collection actuelle du site

Résultat réel : L'élagage de sécurité se produit lors de l'utilisation de la méthode n°1

  • La méthode n° 2 fonctionne correctement pour récupérer le contenu d'autres sites Web, mais pas la méthode n° 1.

  • Les deux méthodes permettent d'accéder à travers les réseaux en Anonyme et les deux fonctionnent pour administrateur du site comptes.

  • La différence vient pour Responsables de la hiérarchie , Approbateurs y Rédacteurs en chef . La méthode n°1 ne donne pas d'accès administrateur à travers les sites web.

Méthode n° 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();
        }
    }
}

Méthode n°2 :

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

1voto

magnifico Points 113

RunWithElevatedPrivileges fournit deux privilèges distincts. Le premier est qu'il élève l'identité Windows de l'utilisateur au compte AppPool, le second est qu'il élève aussi l'identité au compte SharePoint \System qui est un compte de sécurité intégré offrant un contrôle total (dans le sens de SharePoint). Le compte SharePoint interne est utilisé lorsque vous construisez vos objets SP (comme SPSite).

En gros, cela dépendra de la façon dont vous construisez votre code et du moment où vous instaurez vos objets qui affectent la façon dont les privilèges fonctionnent.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X