2011-07-27 111 views
10

我在哪裏可以找到執行以下操作的示例?Active Directory中的用戶/組權限

  1. 從Active Directory中提取用戶。
  2. 獲取用戶所屬的組。
  3. 獲取分配給每個組的權限列表。

這似乎是一個簡單的任務,但我找不到解決方案。

總體目標是分配自定義權限並使用它們來控制應用程序中的權限。

+0

什麼語言? – TheGeekYouNeed

+0

我在.NET/C#中使用Active Directory API。 – user802165

回答

13

如果您使用.NET 3.5或更高版本,則應檢查System.DirectoryServices.AccountManagement(S.DS.AM)命名空間。在這裏閱讀全部內容:

基本上,你可以定義域範圍內,並可以輕鬆地查找用戶和/或組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 
    } 
} 

的新的S.DS.AM可以很容易地與AD中的用戶和羣組玩耍!

最後一點:權限。這些不存儲在Active Directory中 - 因此,您無法從任何AD代碼中檢索這些代碼。

權限存儲在各個文件系統項目上,例如,文件和/或目錄 - 或其他對象(如註冊表項等)。當您擁有AD組或用戶帳戶時,您可以讀取它的SID(安全標識符)屬性 - 該SID將顯示在整個Windows的ACL(訪問控制列表)中 - 但是從用戶或組來看,沒有任何機制可以全部獲取它可能在機器/服務器中的任何地方有權限。

文件和目錄的權限可以例如使用.GetAccessControl()方法上FileInfoDirectoryInfo類檢索:

FileInfo info = new FileInfo(@"D:\test.txt"); 
FileSecurity fs = info.GetAccessControl(); 

DirectoryInfo dir = new DirectoryInfo(@"D:\test\"); 
DirectorySecurity ds = dir.GetAccessControl(); 

解密及那些決策意識是一個整體完全不同的故事!

+0

這是我的懷疑。感謝您的幫助。 – user802165

相關問題