尝试使用pyad查询其他域上的帐户时出错

时间:2018-08-28 09:09:21

标签: python-2.7 flask active-directory pyad

我正在使用pyad 0.5.20对活动目录执行许多操作,例如,用户可以指定其连接详细信息:

 pyad.set_defaults(ldap_server="my.server", username=myusername, password=xxx,ssl=False,ldap_port=123)

然后我可以例如通过其名称检索一个组:

group = pyad.adgroup.ADGroup.from_cn(groupname)

我的问题是pyad.adquery.ADQuery()在指定连接详细信息后尝试使用它时出现错误

AttributeError: 'module' object has no attribute 'set_defaults'

这是完整的代码:

import pythoncom
pythoncom.CoInitialize()
import pyad.adquery
ad = Auth_Type_Config.query.filter_by(auth_type_id=2).first()
if ad:
    pyad.set_defaults(ldap_server=ad.host, username=ad.username,
                      password=ad.password, ssl=ad.is_ssl,
                      ldap_port=ad.port)
else:
    return jsonify({'msg': 'You must configure the authentication method for LDAP.'
                   , 'status': 'error'})

q = pyad.adquery.ADQuery()
where_clause = "SamAccountName = '{}'"
for (index, item) in enumerate(usernames, start=1):
    if index == 1:
        continue
    where_clause += " or SamAccountName = '{}'"

q.execute_query(attributes=['distinguishedName', 'mail', 'name',
                'SamAccountName'],
                where_clause=where_clause.format(*usernames),
                base_dn='CN=Users,DC=dsp,DC=local')

rows = []
for row in q.get_results():
    rows.append(row)
user = (rows[0] if len(rows) > 0 else None)
return rows

1 个答案:

答案 0 :(得分:0)

我想这有点晚了,但是正确的功能似乎是 pyad.pyad_setdefaults 而不是pyad.set_defaults