gpt4 book ai didi

c# - Active Directory 中的用户/组权限

转载 作者:可可西里 更新时间:2023-11-01 08:42:39 26 4
gpt4 key购买 nike

在哪里可以找到执行以下操作的示例?

  1. 从 Active Directory 中提取用户。
  2. 获取用户所属的组。
  3. 获取分配给每个组的权限列表。

这似乎是一项简单的任务,但我找不到解决方案。

总体目标是分配自定义权限并使用它们来控制应用程序内的权限。

最佳答案

如果您使用的是 .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(访问控制列表)中 - 但是从用户或组中,没有机制可以获取所有它可能在机器/服务器的任何地方拥有的权限。

文件和目录的权限可以例如在 FileInfoDirectoryInfo 类上使用 .GetAccessControl() 方法检索:

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

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

破译和理解这些完全是另一回事!

关于c# - Active Directory 中的用户/组权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6850604/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com