Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Thomas Lebrun

Tout sur WPF, LINQ, C# et .NET en général !

Actualités

[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+ Smile

 

 

Technorati tags:
 
del.icio.us tags:
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 :
Posted: mercredi 21 mars 2007 10:18 par Thomas LEBRUN
Classé sous : ,

Commentaires

minsou a dit :

Grrr ... je suis deconcerté par la facilité de faire ca avec MOSS 2007. Essayes un peu avec SPS 2003 ! tu verras ce n'est pas pareil ;-)

MinSOu

# mars 21, 2007 12:42
Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- SharePoint : nouvel article sur la mise en place des Scope dans MOSS Search par Blog Technique de Romelard Fabrice le il y a 4 heures et 7 minutes

- Hello CS par Le Blog de julz le il y a 9 heures et 32 minutes

- MSDN/TechNet/Microsoft Days Tour 2008 à Lille les 13 et 14 Octobre ! par RedoBlog - The .NET Gentleman !!! le il y a 12 heures et 24 minutes

- MVC Pratique #07 - Un projet concret et le transfert des objets avec les ModelBinders par #Rui le il y a 22 heures et 20 minutes

- SQL Server 2008 : Certifié - TS Admin (70-432) par SQL Server vu par Christian Robert le 10-09-2008, 10:58

- [WPF] Comment changer la couleur utilisée pour sélectionner les éléments d’un ItemsControl ? par Thomas Lebrun le 10-09-2008, 10:49

- Hello World! par Hamid's Place le 10-08-2008, 23:38

- SQL Profiler - Configuration pour un développeur - tracer les requêtes SQL de votre application par Atteint de JavaScriptite Aiguë [Cyril Durand] le 10-08-2008, 15:52

- Monitoring et Patron de méthode par Le blog de Marc Ranchin le 10-08-2008, 10:22

- ADO.NET Data Services Hooking POC v2 par Matthieu MEZIL le 10-08-2008, 10:08