C# 2.0 中的访问控制列表





3.00/5 (6投票s)
用于枚举所有访问控制列表条目的工具。

引言
我创建了一个 ACL 查看器实用工具,它执行以下操作:
- 仅解析当前域和信任域中的 SID。目前它无法解析整个林和一些众所周知的 SID。
- 显示分配给受托者的所有权限。
- 显示继承信息。
- 解析所有对象 GUID ==> 属性、属性集和对象类型。
微软开发了一种非常好的架构,用于在 .NET 中从 Active Directory 获取数据。但是,我没有找到关于该架构的好的文档。我进行了一些研发,并创建了一个 ACL 查看器,我需要它来测试我的有效权限算法。
我将在下一篇文章中讨论有效权限。这只是 Active Directory 中权限的开始。
算法
输入
- 对象的 LDAP 路径
- 凭据 => 用户名和密码
输出
- 列出分配在给定对象上的所有权限
算法
- 使用凭据绑定到对象 ==> 使用
DirectoryEntry
类来实现 - 从对象获取安全信息 ==> 使用
ActiveDirectorySecurity
类来实现 - 从安全信息获取安全描述符 ==> 以 SDDL 格式 (基本上是一个
字符串
格式) - 获取所有访问规则、访问控制项 ==> 使用
AuthorizationRuleCollection
类来实现 - 对于每个规则,解析 SID 和对象类型
- 向用户显示所有条目
代码
DirectoryEntry objDE = new DirectoryEntry(adPath, credUser, credPassword);
ActiveDirectorySecurity adSecurity = objDE.ObjectSecurity;
string sd = adSecurity.GetSecurityDescriptorSddlForm(AccessControlSections.All);
AuthorizationRuleCollection rules =
adSecurity.GetAccessRules(true, true, typeof(NTAccount);
NTAccount
类解析当前域中的 SID。我使用 ::LookupAccountSid
来解析信任域中的 SID 和解析众所周知的 SID。
为了解析对象类型,我从 Active Directory 获取所有对象类型并缓存它们。代码非常简单,你可以很容易地理解它。
如果您仍然遇到问题,请通过 SumitKJain@hotmail.com 与我联系。
历史
- 2006 年 10 月 6 日:初始发布