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でエンコードされた値を取得しますが、適切なものではありません:/
誰でもこの問題を解決するのを手伝ってもらえますか?
どうもありがとう!