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

时间:2017-08-25 23:40:32

标签: python python-3.x ldap ldap3

我尝试使用带有ldap3的Python 3通过LDAP将用户添加到Active Directory。

目前我有这行代码可以工作并返回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']

但是这会返回false并且根本不会创建用户。

我认为我做错了所以删除memberOf,再次运行第一批代码来重新创建用户。我使用Windows Server上的Active Directory用户和计算机工具手动将组添加到用户。我打开IDLE,设置我的连接并运行它(输出cut为简洁起见):

>>> 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
]

除了caplitised CNDC之外的其他内容正是我所拥有的。我试过把我的资本化,但它也不会工作。这真让我困惑,因为我以为我做的一切都是正确的。在过去的一两个小时里,我一直在谷歌上搜索并摸不着头脑。

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

创建时为AD用户分配和AD组

1 个答案:

答案 0 :(得分:1)

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