2017-05-11 36 views
0

我想创建一个脚本来识别AD活动目录中通过ldap有效的用户。问题是我不知道在一个活动目录中的有效用户究竟是什么意思......针对活动用户的查询AD

想象一下,我们有一个Windows登录列表。我们想要查询用户是否能够登录。这意味着该帐户没有过期,不活跃,...还有什么?

res = l.search_s("DC=...", 
       ldap.SCOPE_SUBTREE, 
       '(&(objectClass=user)(sAMAccountName=%s))' % sAMAccountName, 
       ['lastlogon','accountExpires', 'cn', 'mail', 'lockoutTime']) 

我的脚本随着if-else-if-else变得越来越复杂。我寻找一种清晰透明的方式来查询:用户目前是否可以登录?

+0

也许你是在思维这一点。如果我正确地理解了你,你所需要的只是所有未被禁用的用户的列表,他们在最近的XX天内登录了域? –

+0

@ T-Heron是的,也许...是的,非禁用用户,没有过期,在去年登录。除此之外,我不知道我是否错过了一些... – wenzul

回答

1

经过进一步的研究:

你应该使用:

  • LastLogonTimeStamp是时间戳:从1年前比较时间戳
  • AccountExpires:值为0或0x7FFFFFFFFFFFFFFF(9,223,372,036,854,775,807)表示该帐户永不过期。
  • lockoutTime:(lockoutTime=>0):这是时间戳时,帐户被锁定,所以如果它的设置它的锁定(搜索ldapwiki.com更多的信息作为 我不能把超过2个链接在后;))

我不很清楚的ActiveDirectory,但不会是更容易使在LDAP过滤器的所有这些测试?

类似的东西(需要调整,对应的属性LDAP语法)

(& 
    (objectClass = user) 
    (sAMAccountName = %s) 
    (lastlogon < dateFrom1Year) 
    (!(accountExpires = *)) 
    ... 
) 
+0

感谢您的评论。 '需要适应,对应于属性LDAP语法'这就是问题所在。 :)在LDAP或Python中... – wenzul

+0

@wenzul我在答案中添加了更多信息 – Esteban