我尝试使用带有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 CN
和DC
之外的其他内容正是我所拥有的。我试过把我的资本化,但它也不会工作。这真让我困惑,因为我以为我做的一切都是正确的。在过去的一两个小时里,我一直在谷歌上搜索并摸不着头脑。
tl; dr如何在使用Connection.add()
答案 0 :(得分:1)
在ldap3库中,有一种将用户添加到一个或多个组的特定方法。看看conn.extend.microsoft.add_members_to_groups(members, groups)
方法。