Quand j'explique le fonctionnement des autorisations dans SharePoint, je dessine un petit Schéma à la main.
Je vais vous épargner mes qualités artistiques en vous montrant la version Visio :
On a 3 différentes entités :
- Les membres du site :
- Ce sont les utilisateurs ou groupes.
- Modèle Objet : SPPrincipal
- Les niveaux d'autorisations
- Ce sont les différents roles qui contiennent un ensemble de droits bien précis
- Modèle Objet : SPRoleDefinition
- Les objets sécurisables
- Ce sont les éléments sur lesquels vont s'appliquer la sécurité : Site, liste ...
- Modèle Objet : ISecurableObject
La sécurité, c'est l'ensemble de ces 3 entités (représenté en triangle sur mon schéma).
Par le modèle objet, cette notion est implémentée dans la classe SPRoleAssignement
Celle ci contient :
- public SPPrincipal Member { get; }
- public ISecurableObject Parent { get; }
- public SPRoleDefinitionBindingCollection RoleDefinitionBindings { get; }
Un SPRoleDefinitionBindingCollection étant une collection de SPRoleDefinition.
Pour finir, un dernier Schéma qui représente l'exemple suivant :
On a dans une collection de site :
- Un site racine.
- "Sylvain" a des droits de lecture
- "Group AD RH" a des droits de collaboration
- Un sous site "Site Projet" qui hérite des droits du site racine
- Un sous site "Sous site RH" qui n'hérite pas des droits du site racine :
- "Sylvain" n'a aucun droit
- "Group AD RH" a des droits d'administration.

C'est plus clair maintenant ;) ?