【问题标题】:How to delete attribute of user in ldap3?如何删除ldap3中用户的属性?
【发布时间】:2016-07-01 05:10:02
【问题描述】:

我知道如何修改属性。

c.modify('cn=user1,ou=users,o=company',
         {'userWorkstations': [(MODIFY_REPLACE, ['Win-7'])]})

link 显示如何删除条目。

但是如何在ldap中删除用户的一个属性(例如:'userWorkstations')?

【问题讨论】:

  • 使用什么语言并通过什么 API?
  • 通过 ldap 在 python 中。我正在使用 ldap3 (ldap3.readthedocs.io)

标签: python active-directory ldap ldap-query


【解决方案1】:

一个 LDAP 修改请求有各种可以执行的“Modification Types”。

您可以“添加”属性的值。 您可以“删除”属性的值。 您可以“替换”属性的值。 您可以“增加”属性的值。 (仅限整数类型)

如果修改类型是“delete”并且有一个没有任何值的属性描述,那么指定属性的所有值都将从条目中删除。在正常情况下,修改操作不能与删除修改类型一起使用来删除不存在的属性(尽管可以使用“替换”修改类型来完成此操作)。

精确的编程语言可能有这些修改类型的 API 简化。

【讨论】:

  • 在 ldap3 中:c.modify('cn=user1,ou=users,o=company', {'userWorkstations': [(MODIFY_DELETE, ['Win-7'])]})
【解决方案2】:

正如乔瓦尼在评论中所说:

在 ldap3: c.modify('cn=user1,ou=users,o=company', {'userWorkstations': [(MODIFY_DELETE, ['Win-7'])]}) – cannatag 2016 年 7 月 3 日 15:22

我只是想指出,在 ldap3 中也存在与 LDAP 的 ORM 样式交互,看起来会略有不同:

UserObj.userWorkstations -= 'Win-7'

或删除该属性,无论它可能具有什么值:

UserObj.userWorkstations.remove()

更改后将其提交回 LDAP: UserObj.entry_commit_changes()

将 UserObj 创建为适合进行这些调用的 Writer 对象作为练习。

【讨论】:

  • 我更喜欢这种风格
猜你喜欢
  • 1970-01-01
  • 2014-12-01
  • 1970-01-01
  • 2022-11-03
  • 1970-01-01
  • 2013-02-25
  • 2016-08-05
  • 2014-09-15
  • 1970-01-01
相关资源
最近更新 更多