2017-05-11 3 views
0

ldapを介してアクティブなディレクトリーで有効なADユーザーを識別するためのスクリプトを作成したいとします。問題は、アクティブディレクトリ内の有効なユーザーが何を意味するのか正確にはわからないということです...アクティブユーザーのための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

たぶん、あなたは上-考え、これを、次のとおりです。その(属性のLDAP構文に対応し、適応する必要がある)よう

何か。私があなたを正しく理解しているのであれば、最後のXX日以内にドメインにログインした、すべての非身体障害者のリストが必要です。 –

+0

@ T-Heronはい、多分...はい、無効ではないユーザー、期限切れではなく、昨年ログインしました。それ以外に私は何かが恋しいのか分からない... – wenzul

答えて

1

あなたは使用する必要があります。

  • LastLogonTimeStampをタイムスタンプである:
  • AccountExpires前1年からタイムスタンプと比較する:0の値または0x7FFFFFFFFFFFFFFF(9,223,372,036,854,775,807)があることを示していますアカウントは期限切れになりません。
  • lockoutTimeの:(lockoutTime=>0)は:;)これは、アカウントがロックされたときのタイムスタンプであるので、それが設定されていた場合、それはをロックされています(私はポストに2つの以上のリンクを置くことができない としてより多くの情報のためldapwiki.comを検索します)

私は非常によくActiveDirectoryのか分からないが、LDAPフィルタにすべてのこれらのテストを行うことが容易ではないでしょうか?

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

あなたのコメントありがとう。 'は、属性LDAP構文に対応する必要があります.'それは問題です。 :)どちらかのLDAPまたはPythonの... – wenzul

+0

@ wenzul私は答えに多くの情報を追加 – Esteban

関連する問題