1

Python を使用して OpenLDAP にユーザーを挿入しようとしています。問題は、ユーザーが ç、é、è などのアクセント付き文字を使用している場合、python がうまく反応せず、OpenLDAP が base64 にエンコードする値を挿入することです。

編集用の私のpythonコードは次のとおりです(挿入と同じ問題ですが、ここでは簡単です):

def edit(self, uid, item, value):
    mod_attrs = [ (ldap.MOD_REPLACE, item, value) ]
    try:
        LDAPEntry.connect(self).modify_s('uid='+uid+','+USER_BASE_DN, mod_attrs)
    except ldap.LDAPError, e:
        print e

印刷値を挿入すると、たとえば次のようになります。

François Dujardin

LDAP では、ldapsearch を使用すると、次のようになります。

cn:: U3TFzJFkISD1kdfv1eQ==

ldif file と ldapadd -f my_file.ldif を使用すると、適切な結果が得られます。

スクリプトのエンコーディングに問題があると思います。OpenLDAP データが適切な形式で提供されません。しかし、私はそれを解決する方法がわかりません。私が試してみました:

value = value.decode('unicode_escape').encode('utf-8')

また

value = value.decode('unicode_escape').encode('iso-8859-1')

異なるbase64でエンコードされた値を取得しますが、適切なものではありません:/

誰でもこの問題を解決するのを手伝ってもらえますか?

どうもありがとう!

4

1 に答える 1