5

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

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

不过,在我弄清楚这一点之前,我花了一段时间谷歌搜索,而我发现的示例几乎完全使用 LDAP 来处理这类事情。有什么理由比这种方法更受欢迎吗?请记住几件事:

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

3 回答 3

3

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

此外,至少在一年前,当我从事这项工作时,python-ldap 是唯一支持接近完整功能集的任何地方的 Python LDAP 实现,因为它建立在 OpenLDAP 之上,但是,OpenLDAP 很难在 Windows 上构建(以及一般情况下),因此大多数构建将缺少一个或多个功能。尽管您没有进行身份验证,但缺少 SASL/Kerberos 支持(在我使用它时缺少它)可能会使您的事情变得复杂。

如果你有一些可以工作的东西,并且只需要在 Windows 上运行它,我真的建议你坚持下去;通过 LDAP 使用 AD 可以变成一个大项目。

于 2009-03-17T15:27:17.527 回答
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
于 2011-03-02T15:59:21.690 回答
1

查看Tim Golden 的 Python 资料

import active_directory
user = active_directory.find_user(user_name)
groups = user.memberOf
于 2009-09-07T23:27:43.113 回答