2017-05-11 113 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