Où puis-je trouver un exemple qui fait ce qui suit?
Cela semble être une tâche simple mais je ne trouve pas de solution.
L’objective général est d’atsortingbuer des permissions personnalisées et de les utiliser pour contrôler les droits au sein d’une application.
Si vous utilisez une version .NET 3.5 ou ultérieure, vous devez consulter l’espace de noms System.DirectoryServices.AccountManagement
(S.DS.AM). Lisez tout a propos de ça ici:
En gros, vous pouvez définir un contexte de domaine et trouver facilement des utilisateurs et / ou des groupes dans AD:
// set up domain context PrincipalContext ctx = new PrincipalContext(ContextType.Domain); // find a user UserPrincipal user = UserPrincipal.FindByIdentity(ctx, "SomeUserName"); if(user != null) { // do something here.... } // find the group in question GroupPrincipal group = GroupPrincipal.FindByIdentity(ctx, "YourGroupNameHere"); // if found.... if (group != null) { // iterate over members foreach (Principal p in group.GetMembers()) { Console.WriteLine("{0}: {1}", p.StructuralObjectClass, p.DisplayName); // do whatever you need to do to those members } }
Le nouveau S.DS.AM facilite vraiment la manipulation des utilisateurs et des groupes dans AD!
Le dernier point: les permissions. Celles-ci ne sont pas stockées dans Active Directory. Par conséquent, vous ne pouvez pas les récupérer à partir d’un code AD.
Les permissions sont stockées sur les différents éléments du système de fichiers, par exemple des fichiers et / ou des répertoires, ou d’autres objects (comme des clés de registre, etc.). Lorsque vous avez un groupe AD ou un compte utilisateur, vous pouvez lire sa propriété SID (identificateur de sécurité) – ce SID apparaîtra dans les ACL (listes de contrôle d’access) partout dans Windows – mais l’utilisateur ou le groupe ne dispose d’aucun mécanisme permissions qu’il peut avoir n’importe où sur la machine / le serveur.
Les permissions pour les fichiers et les répertoires peuvent par exemple être récupérées à l’aide de la méthode .GetAccessControl()
sur les classes FileInfo
et DirectoryInfo
:
FileInfo info = new FileInfo(@"D:\test.txt"); FileSecurity fs = info.GetAccessControl(); DirectoryInfo dir = new DirectoryInfo(@"D:\test\"); DirectorySecurity ds = dir.GetAccessControl();
Déchiffrer et donner un sens à ceux-ci est une toute autre histoire!