LDAP 認証を使用する必要があるプロジェクトに取り組んでいます。Flask アプリケーションに追加する前に、Stack Overflow で練習するためのリンクを見つけた後、ldap.forumsys.com のサーバーを使用しています。
Python コード内で ldapsearch bash コマンドを実行すると、大量のユーザー名 (Tesla など) とそれに関連するデータ (パスワード ハッシュはありません) が取得されます。ここに示すように、ユーザー名/ユーザーデータを抽出できます。
username = request.form['username']
password = request.form['password']
cmd = "ldapsearch -h ldap.forumsys.com -D cn=read-only-admin,dc=example,dc=com -w" + os.environ['LDAP_PWD'] + " -b dc=example,dc=com"
ldap_query = os.popen(cmd).read()
user_str = re.sub("\n", "", ldap_query)
users = user_str.split("#")
user_data = ""
for line in users:
if username in line:
user_data = line
break
しかし、LDAP はデータベースと同じではないことに気付きました。ユーザーのログイン情報を認証するために使用できるパスワード ハッシュを見つけたいと思っていました。
それで、私は python-ldap3 モジュールを試しました:
>>> conn = Connection(server, 'uid=tesla,dc=example,dc=com', 'password', auto_bind=True)
>>> conn.bound
True
>>> conn.entries
[]
残念ながら、conn.entries を呼び出した後、リストにデータが返されないようです。
ldap3 モジュールが接続をバインドしていることがわかります。ldapsearch コマンドもバインドしますか? パスワード ハッシュがない場合、クライアント側でユーザーが入力したユーザー名/パスワードをどのように認証すればよいですか?
どうもありがとうございました。