【发布时间】:2011-07-22 05:46:25
【问题描述】:
我想测试任意用户是否对特定 Active Directory 对象的属性具有写访问权。我认为解决方案的一部分似乎是这样的:
NTAccount Account = new NTAccount("Domain\\XYZ");
SecurityIdentifier Sid =
(SecurityIdentifier)Account.Translate(typeof(SecurityIdentifier));
这似乎让我可以从用户的字符串表示中得到具体的表示。我认为的另一个难题是:
string strMemberString = "LDAP://OU=Test,DC=Domain,DC=local";
DirectoryEntry computers = new DirectoryEntry();
computers.Path = strMemberString;
computers.Options.SecurityMasks = SecurityMasks.Owner | SecurityMasks.Group
| SecurityMasks.Dacl | SecurityMasks.Sacl;
foreach (DirectoryEntry computer in computers.Children)
{
if (computer.Name == "CN=Test")
{
ActiveDirectorySecurity sdc = computer.ObjectSecurity;
//...
不知道从那里去哪里。我该如何完成这个?我应该追求一种完全不同的方式吗?我正在使用 .net 4.0。
我希望解决方案完全是 BCL 代码,而不是 PInvoke 或 WMI。
【问题讨论】:
-
您是否知道“对特定 Active-Directory 对象的属性具有写访问权限”可能是由于属于某个组或属于某个组的组等导致的?跨度>
-
@JPBlanc:是的,我知道。那个“工作”应该由 BCL 为我处理。我只需要了解使用情况。
-
我编辑了我的答案,您会找到检索用户所属安全组的方法。
标签: c# .net security active-directory authorization