【发布时间】:2011-05-03 13:03:54
【问题描述】:
我有使用 AD LDS 存储其分层数据的第 3 方应用程序,我需要在 ASP.NET MVC 中为此系统提供 Web UI。它在目录条目上使用 DACL 来控制用户对单个条目的访问权限。
我发现很少有好的文章解释如何阅读DirectoryEntry 的ActiveDirectoryAccessRules,但我找不到任何计算特定用户的有效权限的好方法。是否有任何可用的支持 Microsoft API 或库,或者我需要发明自己的方式?
调查类似主题的人的参考网址:
【问题讨论】:
-
检查当前用户可以修改对象的哪些属性的最便宜的方法是检查其“allowedAttributesEffective”属性。这是 AD 动态计算的属性。它负责所有继承的权限并拒绝权限覆盖。同样,您可以使用“allowedAttributes”来检查当前用户可以读取哪些属性。当然,如果当前用户没有整个对象的权限,那么读取“allowedAttributes”或“allowedAttributesEffective”的尝试就会失败
-
@Harvey:但这样我就需要冒充正在检查有效权限的用户,对吧?感谢您的提示,我一定会检查一下。
-
@Ignor 是的,需要冒充用户查看有效权限。您还可以查看 AccessCheck 和 GetEffectiveAces。 msdn.microsoft.com/en-us/library/aa374815(v=vs.85).aspx 和 msdn.microsoft.com/en-us/library/aa446637(v=vs.85).aspx。但是警告你。我们在使用这两个 API 时遇到了一些问题。顺便说一句,对我之前评论的更正。 “allowedAttribues”不返回读取权限。所以,不要使用它。 “AllowedAttributeEffective”确实返回写入权限。
-
@IgorRomanov 你找到解决问题的方法了吗?
-
@HarveyKwok 我们可以在哪里找到对象的“allowedAttributesEffective”和“allowedAttributes”属性属性。
标签: c# permissions active-directory ldap