Sécurité du code

L'un des premiers murs auquel se heuretera un développeur Sharepoint est assurément la sécurité du code (Code Access Security ou CAS). CAS est une feature présente dans .NET Framework depuis sa première version. Sharepoint est le premier produit à utiliser ce modèle de sécurité. Ceci a pour effet que dans une installation par défaut, aucun code déployé dans Sharepoint ne peut :

Notez que ceci s'applique au code que vous déployez dans le dossier bin de votre application Web Sharepoint. Si vous déployez au GAC, votre code est dans une zone Full Trust et ne sera pas sujet aux contraintes de sécurité.
 * Accéder au modèle d'objet de Sharepoint
 * Accéder à des fichiers sur disque
 * Accéder à une base de données
 * etc

Trust levels
Par défaut, on retrouve dans le Web.Config d'un nouveau site Sharepoint cette configuration :

&lt;trust level="WSS_Minimal" originUrl="" /&gt;

Pour voir la liste de toutes les fonctionnalités bloquées par cette politique, suivre ce lien

http://www.combined-knowledge.com/Downloads/Code%20Access%20Security%20in%20SharePoint%202007%20for%20Administrators.pdf

On y voit aussi que la politique WSS_Minimal pour un site peut être modifiée pour WSS_Medium. Ceci permettra probablement à votre code de s'exécuter correctement.

Bonnes pratiques
La méthode consistant à élever le niveau de privilège du site à WSS_Medium a pour conséquence d'accorder des accès supplémentaires à tous les composants du site. Ceci peut ne pas être approprié si seulement votre WebPart personnalisé a besoin d'accéder à un fichier disque. On privilégiera donc cette méthode uniquement pour l'environnement de développement.

La meilleure pratique selon http://store.bamboosolutions.com/kb/article.aspx?id=10405 est d'inclure à même le package WSP qu'on bâtit pour déployer notre code dans Sharepoint (sous forme de DLL) un petit bout de XML qui décrit les permissions que notre code a besoin pour rouler. L'article est très détaillé sur la façon dont on doit s'y prendre pour créer un package WSP manuellement, mais il faut savoir qu'il existe des outils pour accélérer le processus.

Références

 * http://store.bamboosolutions.com/kb/article.aspx?id=10405
 * http://www.combined-knowledge.com/Downloads/Code%20Access%20Security%20in%20SharePoint%202007%20for%20Administrators.pdf