- - PR -
LDAP による Basic 認証
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2002-11-14 13:43
現在、LDAP を使用して Basic 認証をかけようとして困っている事があります。
認証機能自体の動作には成功しているのですが、サーバーが返すレスポンスヘッダの挙動に納得がいきません。 通常の一般的な Basic 認証ですと、認証に失敗した場合に 3 回再チャレンジした後に、「Authorization Required」の文字が表示されますよね(IE の場合)。 そして、ブラウザをリロードしたりなどすると、またブラウザがパスワード認証にチャレンジしてくれます。 しかし、auth_ldap モジュールで認証しようとすると、認証に失敗してもブラウザが再チャレンジをしてくれません。しかも IE を別プロセスで立ち上げなおさない限り、その認証ウィンドウを見ることすらできません。 telnet で何が起きているのか調べましたところ、認証に失敗しても Apache 側がレスポンスヘッダに WWW-Authenticate: Basic realm="LDAP" を含めてくれないのが原因のようです。通常のファイルを利用した認証の場合はきちんと返してくれます。 これを返してくれるようにする方法、またはパッチなどはございますでしょうか。 | ||||||||
|
投稿日時: 2002-11-15 16:01
error_log から推測したことですが、ldap のエントリに存在するユーザー名で認証に失敗した時と、そもそもエントリに存在しないユーザー名をダイアログに入力したときで挙動が違うようです。
どうやら、サーチフィルタで 1 件も引っかからなかった場合に融通を利かせた挙動をしてくれないようです。 [Fri Nov 15 15:49:17 2002] [error] [client 192.168.0.198] AuthLDAP: user isam provided an empty password: /~isam/ldap/ こちらがユーザー:isam、パスワードを空で認証に失敗した場合。この場合はちゃんと認証に再チャレンジさせてくれます。 [Fri Nov 15 15:49:59 2002] [error] [client 192.168.0.198] Search must return exactly 1 entry; found 0 entries for search (&(objectclass=*)(uid=isa)): URI /~isam/ldap/ こちらがユーザー:isa、パスワードを空で認証に失敗した場合。 WWW-Authenticate ヘッダを受け取らないので、ブラウザがユーザー名とパスワードをサーバーに送信しなくなります。 今一度 auth_ldap のマニュアルを読み直してみます。 | ||||||||
|
投稿日時: 2002-11-15 16:48
# Apache のバージョンやどの LDAP 認証モジュールを使っているのかを
# 明記しておいた方が回答を得やすいと思いますよ。 LDAP は使ったことが無いので検証していませんが以下のパッチでどうでしょう? (auth_ldap-1.6.0 用です)
とりあえず該当のエラー部のみですが、他にも同じようなのがありますねぇ。 作者の本意はわかりませんが、わざと WWW-Authenticate を返さないようにしたのかもしれません。 | ||||||||
|
投稿日時: 2002-11-15 18:29
あと1時間早くこの掲示板をチェックしていれば…。
と、いうことで私のほうでも同じようにパッチを自作して解決いたしました。 バージョンの明記に関してですが、そうですね失礼致しました。 apache-1.3.27, auth_ldap-1.6.0 です。 vine linux 2.6 なのですが、とりあえず apt で auth_ldap の SRPM を落としてきてパッチ当てて自前 RPM で使っています。
C は Hello World くらいしか書いた事が無いので、危ないソースかもしれませんが。 ![]()
他のチェックの部分でもありましたね。バグではなく仕様なのでしょうが、理解に苦しみますね。 他の LDAP モジュール(mod_auth_ldap-2.4.1)も試しに入れてみたのですが、挙動は同じでした。 giraffe さん、わざわざどうも有難うございます。 |
1