以编程方式查询LDAP权限

问题描述:

是否有任何方法通过编程方式查询OpenLDAP 2.4服务器以找出用户允许修改的某些对象的属性?或者有什么方式告诉服务器忽略当前用户没有权限制作的修改,而不是拒绝整个请求?以编程方式查询LDAP权限

我正在寻找一些方法,我可以避免硬编码哪些用户应该看到哪些字段在我的LDAP管理Web应用程序中可编辑。

+0

尽管我不知道我头上的答案,但可以指出正确的方向:查看Apache Directory Studio源代码的源代码。它是Apache的LDAP服务器的官方GUI管理器。 – cheekoo 2011-05-10 20:31:21

我发现from the UnboundID folks是没有检索ACL信息的官方标准,所以任何实现都是特定于服务器的。

UnboundID的商业服务器提供了为特定条目获得有效访问控制的能力,显然Sun/Oracle DSEE和OpenDS实现了类似的功能。 389 Directory Server(也称为Fedora Directory Server,也称为Red Hat Directory Server)也可能有一些支持。

所以我想我的OpenLDAP服务器运气不好,除非我想经历迁移到其他目录服务器的麻烦。

+0

我很难过,先生!不过谢谢你把它放在这里,我相信有人或其他人会从讨论中受益! – cheekoo 2011-05-13 18:30:22

+0

UnboundID LDAP SDK(商业版)中可用的控件的名称为EffectiveRightsEntry。此请求控件为确定访问权限提供支持。 – 2011-11-23 10:49:46

+0

OpenLDAP不支持此控件。 – EJP 2017-08-28 04:03:12

请检查this是否有帮助。

在此示例中,他正在尝试更改特定对象的ACL。您可能可以重新使用相同/相似的代码。

+0

如果我正确地跟着它,它正在读取名为'acl'的操作属性?我有ApacheDS中显示的操作属性,并且我没有在任何地方看到任何'acl'属性。 'acl'属性是否仅显示特定于该对象的规则? – 2011-05-10 20:50:27

+0

自从我停止使用LDAP之后已经有一段时间了,坦率地说,我从来不需要使用ACL。在调试模式下,尝试像在示例中那样获取对象的ACL。 ACL可能是一个对象的隐藏属性。在此发布您的结果,可能对其他人有用。 您可以使用Google阅读关于LDAP的ACL的更多信息。 – cheekoo 2011-05-10 20:55:52

如果将slapd配置为使用cn = config,那么您可能有获取ACL信息的快捷方式。 要slapd使用cn = config而不是slapd.conf: http://www.zytrax.com/books/ldap/ch6/slapd-config.html 至少如果通过Ldap可用的ACL,修改请求可以在它们执行之前被过滤。

slapadd -u启用干运行模式(不写入后端)模式。

这对处理这种情况会有用吗?

+0

好主意,但我真正想要的是一种将编辑表单修改为当前用户权限的方法。不同的用户可以写入相同对象的不同属性,并且需要以某种方式反映在用户界面中。由于没有办法问服务器“这个用户可以编辑这个属性吗?”我将被困在某种硬编码的解决方案中。 – 2011-05-24 14:01:45