Kaoru Sekiguchi
sekig****@secio*****
2008年 7月 3日 (木) 17:33:31 JST
関口です。 LISM経由でLDAPサーバに対して、全角アルファベットを含むDNをベースDNとして検索すると"No such object"のエラーが発生するという問題が 大分シーイーシーさんから報告されました。 この問題は、OpenLDAPのPerlバックエンドが全角アルファベットのベースDNを半角小文字のアルファベットに正規化してからLISMに渡しており、LISMが半角小文字のベースDNでLDAPサーバに対して検索を行っているため、LDAPサーバ内部の全角アルファベットのDNと一致せず、"No such object"のエラーが発生していることがわかりました。 従って、この問題を解消するには、OpenLDAPのソースコードを変更する必要がありますので、全角アルファベットを使用する場合はOpenLDAPに以下のパッチを当ててください。 diff -cNr openldap-2.3.40.org/servers/slapd/back-perl/search.c openldap-2.3.40/servers/sla pd/back-perl/search.c *** openldap-2.3.40.org/servers/slapd/back-perl/search.c 2007-01-03 06:44:06.000000 000 +0900 --- openldap-2.3.40/servers/slapd/back-perl/search.c 2008-07-01 00:43:15.000000000 +090 0 *************** *** 44,50 **** PUSHMARK(sp) ; XPUSHs( perl_back->pb_obj_ref ); ! XPUSHs(sv_2mortal(newSVpv( op->o_req_ndn.bv_val , 0))); XPUSHs(sv_2mortal(newSViv( op->ors_scope ))); XPUSHs(sv_2mortal(newSViv( op->ors_deref ))); XPUSHs(sv_2mortal(newSViv( op->ors_slimit ))); --- 44,50 ---- PUSHMARK(sp) ; XPUSHs( perl_back->pb_obj_ref ); ! XPUSHs(sv_2mortal(newSVpv( op->o_req_dn.bv_val , 0))); XPUSHs(sv_2mortal(newSViv( op->ors_scope ))); XPUSHs(sv_2mortal(newSViv( op->ors_deref ))); XPUSHs(sv_2mortal(newSViv( op->ors_slimit ))); また、search以外のアクセスの場合、LISM内部でDNの全角大文字アルファベットを全角小文字アルファベットに正規化していたため、LISM経由でLDAPサーバにアクセスすると"No such object"のエラーが発生します。 この問題については、LISMで全角アルファベットは正規化しないように修正したソースコードをcvsに登録しておきました。 ------------------------- 株式会社セシオス 関口 薫 E-Mail: sekig****@secio***** URL: http://www.secioss.co.jp