LDAP認証時のタイムアウト値設定

LDAP認証時のタイムアウト値設定

- kaya taka の投稿
返信数: 6

皆様、いつもお世話になっております。

掲題の件ですが、現在ユーザのログイン認証を
LDAP認証にしており、プライマリ/セカンダリを設定しています。

ホストURL
ldap://ldap-sv1.sample.local;ldap://ldap-sv2.sample.local

上記設定の場合、仮にldap-sv1がNW断した際には
ldap-sv2にて認証される事を確認できたのですが、
ldap-sv1がタイムアウトされるまでに30秒ほどかかります。

このタイムアウト時間を変更(短く)したいのですが
どこで定義可能なのか、ご教示頂けないでしょうか?

なお、Moodleのバージョン以下の通りです。
※version.phpより
    $release = '1.9.9+ (Build: 20100707)';

以上、よろしくお願い致します。

評点平均: お役立ち度: ★★★★★★★ (1)
kaya taka への返信

Re: LDAP認証時のタイムアウト値設定

- Mitsuhiro Yoshida の投稿
画像 Developers 画像 Particularly helpful Moodlers 画像 Translators

PHP 5.3以降をお使いでしたら、タイムアウト用のオプション「LDAP_OPT_TIMELIMIT」をお使い頂けるかと思います。

[PHP: Predefined Constants - Manual]
http://php.net/manual/en/ldap.constants.php

[[#MDL-15796] LDAP failover does not work - Moodle Tracker]
http://tracker.moodle.org/browse/MDL-15796

評点平均: お役立ち度: ★★★★★★★ (1)
Mitsuhiro Yoshida への返信

Re: LDAP認証時のタイムアウト値設定

- kaya taka の投稿

Yoshida様

ご回答誠にありがとうございます。

現在、PHP5.1.6を利用しています。
こちらのバージョンではタイムアウト値の設定は不可でしょうか?

また、ご教示頂いた「LDAP_OPT_TIMELIMIT」についてですが、
5.3にUPしたとしてどのPHPファイルへどのように追記すればよいのでしょうか・・
ご教示頂けませんでしょうか。よろしくお願い申し上げます。

kaya taka への返信

Re: LDAP認証時のタイムアウト値設定

- Mitsuhiro Yoshida の投稿
画像 Developers 画像 Particularly helpful Moodlers 画像 Translators

大変失礼しました。
タイムアウトをコントロールするパラメータは、下記のように「LDAP_OPT_TIMELIMIT」ではなく、「LDAP_OPT_NETWORK_TIMEOUT」です。

[PHP: ldap_set_option - Manual]
http://www.php.net/manual/ja/function.ldap-set-option.php

> 5.3にUPしたとしてどのPHPファイルへどのように追記すればよいのでしょうか・・

下記修正をお試しください。

修正対象プログラム: auth/ldap/auth.php
修正箇所: 1598行目

[ 修正前 ]
foreach ($urls as $server) {
    $server = trim($server);
    if (empty($server)) {
        continue;
    }

    $connresult = ldap_connect($server);
    //ldap_connect returns ALWAYS true


[ 修正後 ]
foreach ($urls as $server) {
    $server = trim($server);
    if (empty($server)) {
        continue;
    }

    ldap_set_option($server, LDAP_OPT_NETWORK_TIMEOUT, 0);

    $connresult = ldap_connect($server);
    //ldap_connect returns ALWAYS true
    
   

評点平均: お役立ち度: ★★★★★★★ (1)
Mitsuhiro Yoshida への返信

Re: LDAP認証時のタイムアウト値設定

- kaya taka の投稿

ご丁寧なご回答、大変ありがとうございます。

phpを5.3へUPし、auth.phpへご教示頂いた通り、記述致しました。
2台でDCを構成していますが、どちらも停止するのが難しいため
今すぐの確認はできませんが、ログイン動作に問題はありませんでした。

なお、ひとつお聞きしたいのですが以下ではタイムアウト秒数を0秒とする
ものと認識しているのですが、サーバ側負荷等で即時セッションが
確立されなかった場合を考慮するとき、数秒とした方がよいのでしょうか?

ldap_set_option($server, LDAP_OPT_NETWORK_TIMEOUT, 0);

kaya taka への返信

Re: LDAP認証時のタイムアウト値設定

- Mitsuhiro Yoshida の投稿
画像 Developers 画像 Particularly helpful Moodlers 画像 Translators

そうですね、例えば ldap_set_option($server, LDAP_OPT_NETWORK_TIMEOUT, 30); のようにタイムアウトを30秒に設定された後、kaya taka様の環境に応じて、徐々に下げられても宜しいかと思います。

Mitsuhiro Yoshida への返信

Re: LDAP認証時のタイムアウト値設定

- kaya taka の投稿

Yoshida様

ご回答ありがとうございます。

認証までの平均時間を見ながら適切なタイムアウト秒を設定していきたいと思います。

お忙しいところご教示頂き、誠にありがとうございました。
今後ともどうぞよろしくお願い致します。