top / index / prev / next / target / source
日記形式でつづる いがぴょんコラム ウェブページです。
Apache HTTP Server 2.2.6 および 2.0.61 の LDAP不具合を修正するためのパッチおよび作成方法をメモしておきます。
2008.01.17作成 この日記は 2008.01.17に作成したものです。
Apache HTTP Server 2.2.6 および 2.0.61 の LDAP不具合を修正するためのパッチおよび作成方法をメモしておきます。
このパッチが無いとLDAPと連携動作させることができないことを確認した環境は以下の通りです。(ただし内容がら 他の環境でも同様の問題が発生するものと考えています)
Webサーバ
OS
Microsoft Windows 2003
Microsoft Windows XP SP2
LDAP サーバ
ApacheDS 1.5.1
ApacheDS 1.0.2
OpenLDAP 2.2.29
モジュール・ダウンロード
環境
対象とした Apache : httpd-2.2.6-win32-src-r2.zip
利用したコンパイラ: Microsoft VisualStudio 2005
解凍およびリネーム
httpd-2.2.6-win32-src-r2.zip を解凍
ファイル名変更 (人力 configure)
httpd-2.2.6\srclib\apr\include
apr.hw -> apr.h
httpd-2.2.6\srclib\apr-util\include
apu.hw -> apu.h
apr_ldap.hw -> apr_ldap.h
apu_want.hw -> apu_want.h
VisualStudio 起動
Apache 2.2.6
ディレクトリ: httpd-2.2.6\modules\ldap
プロジェクトファイル名: mod_ldap.dsp
Apache 2.0.61
ディレクトリ: httpd-2.0.61\modules\experimental
プロジェクトファイル名: util_ldap.dsp
VisualStudio 設定
ターゲット: Releaseに切り替え
構成プロパティ
C/C++ → 全般 → 追加のインクルードディレクトリ httpd-2.2.6\os\win32 を追加
リソース → リソースファイル名 リソースファイル名を空欄にする。 ※原因不明なエラー。仕方なく 無理矢理回避。(VS2005, VS2003 いずれにおいても発生、、、)
リンカ → 全般 → 追加のライブラリディレクトリ C:\Program Files\Apache Software Foundation\Apache2.2\lib ※本物の Apache HTTP Server の libディレクトリを指定
リンカ → 入力 → 追加の依存ファイル
Apache 2.2.6 : libapr-1.lib libaprutil-1.lib libhttpd.lib の3ファイルを追加。
Apache 2.0.61: libapr.lib libaprutil.lib libhttpd.lib の3ファイルを追加。
実際のパッチ作業
ソースコード変更
対象: util_ldap.c
内容: ※-1 を 0 に変更
Apache 2.2.6の場合
#define APR_LDAP_SIZELIMIT 0
* Apache 2.0.61の場合
該当箇所 3箇所について -1 から 0 に変更。.
感想
私に C++言語スキル (というか VisualStudioスキル) が備わっていて、本当に便利だと思いました。というのも、普段 私は自分に C++スキルがあるということを忘れているのです。というか C++は忘れたいプログラミング言語です… (苦笑)
関係あると考えているリソース
つくば日記 (仮): Win32版 Apache HTTP Server 2.2.x で LDAP 認証できない 「ApacheDS の方のログを見ると,LDAPメッセージのパーズに失敗してるんでエラーなんじゃーって出ている。発生しているエラーは "sizeLimit が真っ当な整数じゃないよ" という内容。」との記載があります。私が遭遇しているのと まさに同じ現象です。
関係がありそうな Bugzilla (バグジラ)
この問題の発端は、sizeLimitとして -1 を飛ばすような実装になっている点なのだそうです。別のWebページにて、-1 ではなく 0 を与えるのが LDAP的に正しい仕様なのだとの記載がありました。これは、Apacheのログ上で ldap_search_ext_s() が失敗するということによって気がつきます。(文字化けがありますので解読が面倒なのですけれども…)
関連する日記
2008/01/11 日記: Apache HTTP Server 2.2.6 (Windows) + ApacheDS 1.5.1 の動作
2008/01/10 日記: Shibuya.trac ミーティング1.0 (2008.01.19@豊洲) , 「第四期 中将棋全国大会・名人戦」に参戦
実際に Active Directoryと接続する際には 更にハマりそうだと考え始めました。私にとっての馴染みの言語 Javaで どのようなコーディングになるのか調べておく必要があるように考えています。