2016-11-16 18 views
0

認証のためにLDAPサーバに接続しようとしています。私たちのLDAPサーバーはSSLを使用していますが、SSL証明書は使用していません。私は、システム管理者によって設けられた二つのURLを持ってldapライブラリを使用したPythonでのLDAP認証の問題

:後

は私のコードです。次のようなものがあります:

url1 = "ldap://100.x.x.x:389" 
url2 = "ldaps://10.x.x.x:636" 

私の最初の質問は私が使うべきですか? //とLDAPS:LDAPとの違いは何ですか//

LDAP認証コードは次のようですが、私は(URL1とURL2)の両方を使用しようとしました:

conn = ldap.initialize(url) 

ldap.TLS_AVAIL 
1 

conn.simple_bind_s(
     'CN={0},ou=users,DC=compnay,DC=com'.format(myemail), 
     mypassword 
    ) 

conn.simple_bind(
     'CN={0},ou=users,DC=compnay,DC=com'.format(myemail), 
     mypassword 
    ) 

私は最初のURLを使用した場合(URL1 )SIMPLE_BIND_Sと、次のエラーです:

INVALID_CREDENTIALS: {'info': u'80090308: LdapErr: DSID-0C0903D9, comment: AcceptSecurityContext error, data 52e, v2580', 'desc': u'Invalid credentials'}

が、私はsimple_bindで使用する場合、それは私がパスワードやユーザー名が間違っているにもかかわらず、int型与えます。

simple_bind_sとsimple_bindの違いは何ですか?認証にsimple_bindを使用するにはどうすればよいですか?

答えて

0

simple_bind()simple_bind_s()の違いはsimple_bind()非同期simple_bind_s()同期であることです。

同期バージョンでは、プログラムが終了するまで待ってから、結果を返します。非同期バージョンではIDコードが即座に返され、バックグラウンドで作業が続けられます。その後、result()にIDコードを渡して結果。

simple_bind()への電話が失敗する可能性があります。結果をまだ取っていないので、あなたはそれを知らないだけです。あなたが使用したいので

ほとんどのLDAP機能は、完了するまでに長い時間がかかることなど一部のLDAP操作は(特に検索)add()add_s()delete()delete_s()search()search_s()、非同期および同期のバージョンを、持っていますあなたのプログラムに長い休止を持たせたくない場合は、非同期バージョンを使用してください。