【发布时间】:2020-07-23 18:18:41
【问题描述】:
我正在使用 Python 模块 ldap3 在 Active Directory 中添加用户。这段代码对我有用:
from ldap3 import Server, Connection, SIMPLE, SYNC, ASYNC, SUBTREE, ALL
AD_SERVER = 'w1.sub.company.ltd'
AD_USER = 'admin@sub.company.ltd'
AD_PASSWORD = '123456'
AD_SEARCH_TREE = 'dc=sub,dc=company,dc=ltd'
server = Server(AD_SERVER)
conn = Connection(server, user=AD_USER, password=AD_PASSWORD)
print(conn.bind())
conn.add('CN=John Smith,OU=Users,OU=Admins,DC=sub,DC=company,DC=ltd',
['top', 'person', 'organizationalPerson', 'user'],
{'displayName': 'John Smith VIP', 'sn': 'VIP', 'givenName': 'John Smith',
'sAMAccountName': 'SmithJ', 'userPrincipalName': 'SmithJ', 'userPassword': '123456'})
print(conn.result)
conn.unbind()
但如果我在代码中添加属性“memberOf”:
conn.add('CN=John Smith,OU=Users,OU=Admins,DC=sub,DC=company,DC=ltd',
['top', 'person', 'organizationalPerson', 'user'],
{'memberOf': ['CN=SubAdmins,OU=Groups,OU=Admins,DC=sub,DC=company,DC=ltd'],
'displayName': 'John Smith VIP', 'sn': 'VIP', 'givenName': 'John Smith',
'sAMAccountName': 'SmithJ', 'userPrincipalName': 'SmithJ', 'userPassword': '123456'})
Python 抛出以下错误消息:
{'result': 53, 'description': 'unwillingToPerform', 'dn': '', 'message': '0000209A: SvcErr: DSID-031A0FF7, 问题 5003 (WILL_NOT_PERFORM), 数据 0\n\x00 ','推荐':无,'类型':'addResponse'}
我猜我的错误出在语法上,但我不知道如何解决。
- 如何在用户配置文件中添加组? (已解决)
- 不知道怎么添加 'userAccountControl': '66048' 属性
谢谢!
编辑:
- 在组中添加用户:
user_dn = 'CN=John Smith,OU=Users,OU=Admins,DC=sub,DC=company,DC=ltd'
get_groups = [('CN=SubAdmins,OU=Groups,OU=Admins,DC=sub,DC=company,DC=ltd')]
conn.extend.microsoft.add_members_to_groups([user_dn], get_groups)
- 对于添加 userAccountControle:
user_dn = f'CN=John Smith,OU=Users,OU=Admins,DC=sub,DC=company,DC=ltd'
conn.modify(user_dn, {"userAccountControl": (MODIFY_REPLACE, 66050)})
【问题讨论】:
-
您不能添加 memberOf 属性,因为它是目录的操作属性(内部维护的一种),因此只有在您从组中添加/删除用户时才会更新。跨度>
-
userAccountControl 是整数 ADSI 数据类型。我不知道python,但你可以试试没有'66048'值周围的引号
标签: python active-directory ldap