[MOSS 2007] Exécuter diverses actions avec des privilèges élevés
Actuellement en train de travailler sur un projet MOSS 2007 (Microsoft Office Sharepoint Server 2007), je tenais à vous faire part d'un petit retour d'expérience.
Il peut arriver, pour une raison ou une autre, que l'on vous demande de réaliser un petit développement pour Sharepoint 2007: une Webpart qui va parcourir une collection de sites et à afficher diverses informations relatives aux sites trouvés. Jusque là, vous vous dîtes: "Pas de problèmes, je devrais y arriver".
Après avoir réalisé votre Webpart, vous la testez et tout se passe bien. Cependant, comme vous êtes un minimum consciencieux, vous décidez de tester votre Webpart sans utiliser le compte « Administrateur » que vous aviez utilisé précédemment. Et là, c’est le drame : il vous est impossible d’afficher la page car IIS (Internet Information Services) vous renvois une erreur 403 en vous demandant de vous authentifier !
Après avoir placé des blocs try/catch là où il faut, vous vous rendez compte qu’une erreur du type UnauthorizedAccessException est levée.
La question qui se pose alors est : « Pourquoi une telle exception est-elle levée alors que je ne fais que récupérer des informations sur des sites auxquels j’arrive à accéder depuis mon navigateur et sachant que l’utilisateur que vous utilisez dispose de tous lesdes droits nécessaires ? »
La réponse à cette question est « simple » : Même si votre utilisateur dispose de tous les droits nécessaires, vous devez savoir que certaines propriétés, telle que la liste des alertes d’un site ou bien encore son propriétaire (owner) ne sont accessibles qu’à des utilisateurs qui sont administrateurs de la collection de sites !
Ainsi, si vous souhaitez que votre code fonctionne correctement, vous allez devoir utiliser l’impersonnalisation au moyen de la méthode RunWithElevatedPrivileges :
SPSecurity.RunWithElevatedPrivileges(delegate()
{
// Your code here
});
Ainsi, tout le code qui se trouve dans le délégué sera exécuté avec des droits systèmes.
A+ 
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :