有沒有一種首選的方法可以在Python中從Active Directory域中獲取用戶/組信息?

2024-06-16 09:49:23 发布

您现在位置:Python中文网/ 问答频道 /正文

对于我正在处理的Django应用程序,我希望允许组成员身份由activedirectory组确定。在翻了一段时间的pywin32文档之后,我想到了这个:

>>> import win32net
>>> win32net.NetUserGetGroups('domain_name.com', 'username')
[(u'Domain Users', 7), ...]

我在google上花了一段时间才弄明白这一点,我发现的示例几乎完全是用LDAP来处理这种事情的。有什么理由比这种方法更受欢迎吗?记住几件事:

  1. 我没有使用ActiveDirectory来实际执行身份验证,只使用权限。身份验证由另一台服务器执行。在
  2. 虽然有一些跨平台的功能是很好的,但这可能几乎只在Windows上运行。在

Tags: djangoname文档importcom身份验证应用程序domain
3条回答

AD的LDAP接口有很多“怪癖”,这使得它比表面上看起来更难使用,而且在功能上往往明显落后。当我使用它时,我主要处理身份验证,但是不管您在做什么,它可能都是一样的。有很多奇怪的是,必须绑定为某个用户来执行普通LDAP服务器允许您以匿名身份进行的简单搜索。在

另外,至少在一年前,当我做这个工作时,python-ldap是唯一一个支持接近完整功能集的python-ldap实现,因为它是在OpenLDAP之上构建的,但是OpenLDAP在Windows上构建是相当困难的(一般来说),所以大多数构建都会缺少一个或多个特性。尽管您没有进行身份验证,但是缺少SASL/Kerberos支持(在我使用它时就缺少了这种支持)可能会使事情变得复杂。在

如果你有一些有用的东西,而且只需要在Windows上运行,我真的建议你坚持下去;通过LDAP使用广告可能会变成一个大项目。在

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

签出Tim Golden's Python Stuff。在

import active_directory
user = active_directory.find_user(user_name)
groups = user.memberOf

相关问题 更多 >