在Python中,有没有更好的方法从Active Directory域获取用户/组信息?
对于我正在开发的Django应用程序,我希望允许组成员身份由Active Directory组确定。在翻阅pywin32文档一段时间后,我得出了以下结论:在Python中,有没有更好的方法从Active Directory域获取用户/组信息?,python,winapi,active-directory,ldap,pywin32,Python,Winapi,Active Directory,Ldap,Pywin32,对于我正在开发的Django应用程序,我希望允许组成员身份由Active Directory组确定。在翻阅pywin32文档一段时间后,我得出了以下结论: >>> import win32net >>> win32net.NetUserGetGroups('domain_name.com', 'username') [(u'Domain Users', 7), ...] 不过,我花了一段时间在谷歌上搜索,才弄明白这一点。我发现的示例几乎完全是用LDAP来实现
>>> import win32net
>>> win32net.NetUserGetGroups('domain_name.com', 'username')
[(u'Domain Users', 7), ...]
不过,我花了一段时间在谷歌上搜索,才弄明白这一点。我发现的示例几乎完全是用LDAP来实现这类功能的。有什么理由比这种方法更受欢迎吗?记住两件事:
AD的LDAP接口有很多“怪癖”,使得它比表面上看起来更难使用,而且它往往在功能上明显落后。当我使用它时,我主要处理身份验证,但不管你在做什么,它可能都是一样的。有很多奇怪的地方,必须作为某个用户绑定,只需执行普通LDAP服务器允许您匿名执行的简单搜索 另外,至少在一年前,当我研究这个问题时,python ldap是唯一支持接近完整功能集的python ldap实现,因为它构建在OpenLDAP之上,然而,OpenLDAP在Windows上构建相当困难(一般来说),因此大多数构建都会缺少一个或多个功能。虽然您没有进行身份验证,但是缺少SASL/Kerberos支持(在我使用它时缺少)可能会使事情变得复杂 如果你有一些东西可以工作,并且只需要在Windows上运行它,我真的建议你坚持使用它;通过LDAP使用AD会变成一个大项目。请查看
那对我不起作用。我试着在iis6.0之后使用cherrypy。它在python shell中工作得很好——我猜连接到AD所需的permissons可能不起作用。
import active_directory
user = active_directory.find_user(user_name)
groups = user.memberOf
import wmi
oWMI = wmi.WMI(namespace="directory\ldap")
ADUsers = oWMI.query("select ds_name from ds_user")
for user in ADUsers:
print user.ds_name