以编程方式查询LDAP权限
是否有任何方法通过编程方式查询OpenLDAP 2.4服务器以找出用户允许修改的某些对象的属性?或者有什么方式告诉服务器忽略当前用户没有权限制作的修改,而不是拒绝整个请求?以编程方式查询LDAP权限
我正在寻找一些方法,我可以避免硬编码哪些用户应该看到哪些字段在我的LDAP管理Web应用程序中可编辑。
我发现from the UnboundID folks是没有检索ACL信息的官方标准,所以任何实现都是特定于服务器的。
UnboundID的商业服务器提供了为特定条目获得有效访问控制的能力,显然Sun/Oracle DSEE和OpenDS实现了类似的功能。 389 Directory Server(也称为Fedora Directory Server,也称为Red Hat Directory Server)也可能有一些支持。
所以我想我的OpenLDAP服务器运气不好,除非我想经历迁移到其他目录服务器的麻烦。
请检查this是否有帮助。
在此示例中,他正在尝试更改特定对象的ACL。您可能可以重新使用相同/相似的代码。
如果我正确地跟着它,它正在读取名为'acl'的操作属性?我有ApacheDS中显示的操作属性,并且我没有在任何地方看到任何'acl'属性。 'acl'属性是否仅显示特定于该对象的规则? – 2011-05-10 20:50:27
自从我停止使用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启用干运行模式(不写入后端)模式。
这对处理这种情况会有用吗?
好主意,但我真正想要的是一种将编辑表单修改为当前用户权限的方法。不同的用户可以写入相同对象的不同属性,并且需要以某种方式反映在用户界面中。由于没有办法问服务器“这个用户可以编辑这个属性吗?”我将被困在某种硬编码的解决方案中。 – 2011-05-24 14:01:45
尽管我不知道我头上的答案,但可以指出正确的方向:查看Apache Directory Studio源代码的源代码。它是Apache的LDAP服务器的官方GUI管理器。 – cheekoo 2011-05-10 20:31:21