Pythonで基本的なLDAP認証スクリプトを実装しようとしていますが、単純なLDAP検索を実行して、働く私は正しく私のLDAPオブジェクトと接続を作成してセットアップしたと信じています。Python LDAP:LDAPObject.search_s()は動作しますが、LDAPObject.search()は使用しません
バインドした後、私は検索を試みます。 LDAPObject.search_s()メソッドを使用すると、ユーザー情報を含む文字列のリストが正常に返されます。 LDAPObject.search()メソッドを使用すると、メソッドは結果コード2を返します。これはプロトコルエラーです。 search()メソッドを使用する理由は、リストではなくintを返すためです。私がthe Python LDAP documentationに従って理解しているところから、2つのメソッドは同じ引数を取ることができるので、なぜ一方のメソッドがエラーを返すのか、もう一方のメソッドは返さないのか分かりません。このコードの
import ldap
import getpass
# get login info
username = raw_input("Enter your username: ")
password = getpass.getpass("Enter your password: ")
ldap_server = "LDAP://ipaddress:port"
base_dn = "OU=Domain Users,DC=dummyname,DC=com"
user_dn = username + "@dummyname.com"
search_filter = "(&(objectClass=user)(sAMAccountName=" + username + "))"
ld = ldap.initialize(ldap_server);
ld = ldap.open(ldap_server)
ld.protocol_version = 3
ld.set_option(ldap.OPT_REFERRALS, 0)
# bind user information to ldap connection
try:
print ld.simple_bind_s(user_dn, password)
results = ld.search(base_dn, ldap.SCOPE_SUBTREE, search_filter)
print results
ld.unbind_s()
except ldap.INVALID_CREDENTIALS:
print "Your username or password is invalid."
except Exception as e:
print("Connection unsuccessful: " + str(e.message))
ld.unbind_s()
全出力は次のとおりです:任意の助けをいただければ幸いです
Enter your username: myusername
Enter your password:
(97, [], 1, [])
2
は、ここに私のコードです。ありがとう。