2

私のldapツリーで動作するように、つぶやき(voipソフトウェア)のpythonベースの認証器を変更しようとしています。

LDAP オーセンティケーターは、次の場所で入手できます。

http://www.winex.org/linux/zealot/src/mumble-scripts/Authenticators/LDAP/LDAPauth.py

それは機能しますが、私の LDAP レイアウトではうまくいかないため、少し変更する必要があります。私はうまくいく可能性のあるアプローチを知っていますが、残念ながら私はグーグルから学んだことよりもPythonについての知識がありません(私は他のプログラミングの専門知識を持っています)。

私の LDAP レイアウトは次のようになります。

charName=xxx, ou=people, dc=xxx, dc=com

userPasswordこの下には、やなどの属性が格納されてloginいます。

上記の Python スクリプトは、LDAP バインドを使用して認証するように調整されています。この場合、 としてバインドする必要があり"charName=logindatafromapp, ou=people, dc=xxx, dc=com"ます。残念ながら、人々は でログインしません"charName""login"、 は属性ですが、 と同一ではありません"charName"

属性にバインドする方法がわからないので、ここに私の考えがあります:

  • 最初に LDAP 管理者としてバインドし、すべてのエントリに対して検索を実行し、"logindatafromapp"その値を と照合します"login"。一致が見つかった場合は、一致するものを取得し、当初の意図どおり"charName"に再バインドします。charName

私は現在、値のクエリ"charName"とその値を変数に割り当てることに固執しているため、2番目のldapバインドで使用できました(Googleは実際には役に立ちませんでした)。

これが私のコードです:

ldap_conn = ldap.initialize(ldap_uri, 0)
ldap_conn.bind_s("cn=admin,dc=xxxxxxxx,dc=com","pass")
res = ldap_conn.search_s('ou=people,dc=xxxxxx,dc=com', ldap.SCOPE_ONELEVEL,'login=trony',['charName'])
print(res)

次に、 を出力し"[('charName=Trony,ou=people,dc=xxxxxxx,dc=com', {'charName': ['Trony']})]"ます。

(the ) は一時的なフィルターで、 var"login=trony"に置き換える必要があります。私の問題は、変数に(この場合)apploginどのように割り当てることができるかです。"Trony"出力は特別な構造体のようですか?

4

2 に答える 2

3

「トロニー」は

res[0][1]['charName'][0]

リストの最初の要素を取得します—これはタプルです。次に、タプルの最初の要素。それは辞書です。次に、キー'charName'のディクショナリの値。もう一度リストです。次に、リストの最初の要素。

于 2012-07-01T16:18:23.513 に答える
0

少なくとも 2 つの選択肢があります。

  • 説明した方法を使用して、所有している情報を使用してエントリを検索します。この場合はlogin、ユーザーが入力した属性の値を使用し、単純なバインドまたは SASL バインドで見つかった DN を使用します。
  • 属性の値のみが既知loginの場合に SASL バインドが成功するように、ID マッピングで SASL を使用して authId (属性の値) をマップします。login

最初の方法では検索とバインドが必要です。2 番目の方法では、選択した SASL メカニズムに応じて、ユーザー エントリに可逆パスワードが必要になる場合があります (AES はその目的に適した暗号化方式です)。DIGEST-MD5 メカニズムで SASL を使用すると、説明したように ID をマッピングする方法が提供され (すべてのプロ品質の LDAP サーバーがこのようなマッピング メカニズムをサポートします)、ネットワーク経由で平文でパスワードを送信する必要がなくなりますが、欠点があります。パスワードがソルト化された SHA-2 ダイジェストとして保存される単純なバインドを使用する場合ほど安全ではありません。DIGEST-MD5 は可逆パスワードを必要とするため使用しないでください。強力な SHA-2 (salt を使用) を使用するほど安全ではありませんが、それを必要とするアプリケーションで使用できます。

于 2012-07-02T01:40:22.137 に答える