对于我正在处理的Django应用程序,我希望允许组成员身份由Active Directory组确定。经过一段时间挖掘pywin32文档后,我想出了这个:
>>> import win32net
>>> win32net.NetUserGetGroups('domain_name.com', 'username')
[(u'Domain Users', 7), ...]
我在谷歌搜索之前花了一段时间,但我发现的例子几乎完全使用LDAP来做这种事情。有什么理由比这种方法更受欢迎吗?记住几件事:
答案 0 :(得分:3)
AD的LDAP界面有很多“怪癖”,使得它比表面上看起来更难以使用,并且它往往落后于功能。当我使用它时,我主要处理身份验证,但无论你在做什么,它都可能是相同的。就必须被绑定为某个用户只是为了进行普通LDAP服务器允许您匿名进行的简单搜索而言,有很多奇怪的事情。
此外,至少在一年前,当我研究这个时,python-ldap是唯一支持任何接近完整功能集的Python LDAP实现,因为它建立在OpenLDAP之上,但是,OpenLDAP是在Windows上(通常)很难构建,因此大多数构建都缺少一个或多个功能。虽然您没有进行身份验证,但缺少SASL / Kerberos支持(在我使用它时缺少)可能会让您感到复杂。
如果你有一些有用的东西,只需要在Windows上运行它,我真的建议坚持下去;通过LDAP使用AD可以变成一个大项目。
答案 1 :(得分:2)
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
答案 2 :(得分:1)
import active_directory
user = active_directory.find_user(user_name)
groups = user.memberOf