Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中,有没有更好的方法从Active Directory域获取用户/组信息?_Python_Winapi_Active Directory_Ldap_Pywin32 - Fatal编程技术网

在Python中,有没有更好的方法从Active Directory域获取用户/组信息?

在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来实现

对于我正在开发的Django应用程序,我希望允许组成员身份由Active Directory组确定。在翻阅pywin32文档一段时间后,我得出了以下结论:

>>> import win32net
>>> win32net.NetUserGetGroups('domain_name.com', 'username')
[(u'Domain Users', 7), ...]
不过,我花了一段时间在谷歌上搜索,才弄明白这一点。我发现的示例几乎完全是用LDAP来实现这类功能的。有什么理由比这种方法更受欢迎吗?记住两件事:

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

  • 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