1. ホーム
  2. python

[解決済み] Python + ldap による Active Directory の認証

2023-03-14 01:17:30

質問

Python + LDAPを使用してADに対して認証を行うにはどうしたらよいでしょうか。私は現在python-ldapライブラリを使用していますが、それが生成するのは涙だけです。

私は簡単なクエリを実行するためにバインドすることさえできません。

import sys
import ldap


Server = "ldap://my-ldap-server"
DN, Secret, un = sys.argv[1:4]

Base = "dc=mydomain,dc=co,dc=uk"
Scope = ldap.SCOPE_SUBTREE
Filter = "(&(objectClass=user)(sAMAccountName="+un+"))"
Attrs = ["displayName"]

l = ldap.initialize(Server)
l.protocol_version = 3
print l.simple_bind_s(DN, Secret)

r = l.search(Base, Scope, Filter, Attrs)
Type,user = l.result(r,60)
Name,Attrs = user[0]
if hasattr(Attrs, 'has_key') and Attrs.has_key('displayName'):
  displayName = Attrs['displayName'][0]
  print displayName

sys.exit()

これを [email protected] password username で実行すると、2つのエラーのうちどちらかが発生します。

Invalid Credentials - 入力ミスや意図的に間違った認証情報を使用した場合、認証に失敗します。

ldap.INVALID_CREDENTIALS: {'info': '80090308: LdapErr: DSID-0C090334、コメント。AcceptSecurityContextエラー、データ52e、vece', 'desc': '無効な認証情報'}。

または

ldap.OPERATIONS_ERROR: {'info': '00000000: LdapErr: DSID-0C090627, comment: この操作を実行するには、接続でバインドが正常に完了する必要があります。'操作エラー'}.

正しくバインドするために、何が足りないのでしょうか。

fedoraとwindowsで同じエラーが出ています。

どのように解決するのですか?

私は不足していた

l.set_option(ldap.OPT_REFERRALS, 0)

initから