【发布时间】:2010-11-19 11:29:51
【问题描述】:
我正在为 LDAP 服务器编写 Web 前端 (django)。不同类型的人拥有不同类型的权限,因此我设置了 LDAP ACL 来控制谁可以查看或编辑特定属性。 现在很容易确定特定用户是否具有读取权限 - 尝试读取,您将看到您得到什么。 但是我没有看到一种优雅的方式来区分读写访问之前我实际上尝试编写一些更改。也就是我想在界面里说清楚,登录的用户是有写权限,还是只能读。这样用户就不会尝试编辑他们不能编辑的属性。
我唯一想到的就是尝试暂时将某种虚拟对象写入属性,看看是否成功。如果是这样,将恢复原始值,并且我知道该用户具有写入权限。然后我可以将此属性显示为可编辑。 这样做的问题是,如果在写入 dummy 之后且在恢复原始值之前服务器崩溃,我的 LDAP 服务器中将留下 dummy 值。
我需要的是某种方式来查询 ACL,这种方式类似于我可以查询架构定义。但也许这被 LDAP “禁止”了?
有什么想法吗?
艾萨克
【问题讨论】:
-
您使用哪个 Ldap 服务器?您使用哪些接口/绑定来访问它?
-
我使用 openldap 2.3.32 和 python 2.6 ldap 绑定(导入 ldap)
-
我突然想到,我不需要写一个假人来看看我是否有写权限。我可以尝试写入原始值,如果我没有写入权限,这将导致错误,如果我有读取权限,则不会更改任何内容。不过,看起来并不那么优雅。
-
"import ldap" 在我的 vanilla python2.6 中产生错误,因此您必须安装了第三方模块。是哪个?
-
嗯,我使用来自python-ldap.org 的python-ldap,准确地说是python 2.6.5,它们都是为ubuntu server 10.04 打包的。