我在哪裏可以找到執行以下操作的示例?Active Directory中的用戶/組權限
- 從Active Directory中提取用戶。
- 獲取用戶所屬的組。
- 獲取分配給每個組的權限列表。
這似乎是一個簡單的任務,但我找不到解決方案。
總體目標是分配自定義權限並使用它們來控制應用程序中的權限。
我在哪裏可以找到執行以下操作的示例?Active Directory中的用戶/組權限
這似乎是一個簡單的任務,但我找不到解決方案。
總體目標是分配自定義權限並使用它們來控制應用程序中的權限。
如果您使用.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()
方法上FileInfo
和DirectoryInfo
類檢索:
FileInfo info = new FileInfo(@"D:\test.txt");
FileSecurity fs = info.GetAccessControl();
DirectoryInfo dir = new DirectoryInfo(@"D:\test\");
DirectorySecurity ds = dir.GetAccessControl();
解密及那些決策意識是一個整體完全不同的故事!
這是我的懷疑。感謝您的幫助。 – user802165
什麼語言? – TheGeekYouNeed
我在.NET/C#中使用Active Directory API。 – user802165