如何在 Python 中使用 LDAP 将新用户添加到组?

How do I add a new user to a group with LDAP in Python?

我正在尝试使用 Python 3 和 ldap3 通过 LDAP 将用户添加到 Active Directory。

目前我有这行代码可以工作 returns true:

conn.add('cn=' + uid + ',cn=Users,dc=example,dc=com', 'user', {'sAMAccountName': uid, 'userPrincipalName': uid,'givenName': fname, 'sn': sname, 'displayName': name, 'mail': uid + '@example.com'})

所有这一切只是用给定的参数创建一个用户 - 太棒了。

然后我想将我正在创建的用户分配给一个组,所以我将以下内容添加到属性列表中(也尝试使用 member 而不是 memberOf):

'memberOf': ['cn=My Group,cn=Users,dc=example,dc=com']

但是这个 returns 是错误的,根本不会创建用户。

我以为我做错了什么,所以再次删除了 memberOf、运行 的第一批代码以重新创建用户。我在 Windows 服务器上使用 Active Directory 用户和计算机工具手动将组添加到用户。我打开 IDLE,设置我的连接和 运行 这个(为简洁起见输出剪切):

>>> conn.search('dc=example,dc=com', '(objectclass=person)', attributes=['memberOf'])
>>> conn.entries
[...
, DN: CN=username,CN=Users,DC=example,DC=com - STATUS: Read - READ TIME: <snip>
    memberOf: CN=My Group,CN=Users,DC=example,DC=com
]

除了首字母大写的 CNDC 之外,这正是我所拥有的。我试着把我的资本化,但它也行不通。这真的让我感到困惑,因为我认为我做的一切都是正确的。在过去的一两个小时里,我一直在谷歌搜索和摸不着头脑。

tl;dr 如何在使用 Connection.add()

创建 AD 用户时将其分配给 AD 组

在 ldap3 库中有一种将用户添加到一个或多个组的特定方法。看看 conn.extend.microsoft.add_members_to_groups(members, groups) 方法。