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 サーバーでは匿名で実行できる単純な検索を実行するためだけに、特定のユーザーとしてバインドする必要があるという点で、多くの奇妙さがあります。

また、少なくとも 1 年前の時点で、私がこれに取り組んだとき、python-ldap は OpenLDAP の上に構築されているため、完全な機能セットに近い場所をサポートする唯一の Python LDAP 実装でした。 Windows で (そして一般的に) ビルドするため、ほとんどのビルドには 1 つまたは複数の機能がありません。あなたは認証を行っていませんが、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 Stuffをチェックしてください。

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