Active Directory

MicrosoftのActive Directory(AD)は、LDAP(Lightweight Directory Access Protocol)のような機能を含むさまざまなネットワークディレクトリサービスを提供します。 Windows 2000 Serverおよびそれ以降のバージョンのオペレーティングシステムに含まれています。このページの焦点は、 LDAP認証機能にあります。


ADおよびLDAP認証のトラブルシューティング

警告:PHPのLDAPモジュールは存在していないようです。インストールされて有効になっていることを確認してください。

これは通常、メインのddap dllまたはそれをサポートしているdllのいずれかが見つからないことを意味します。メインのものから始めましょう。 http://(moodleserver)/admin/phpinfo.phpを参照し、[設定ファイル(php.ini)パス]フィールドを調べて、使用されているphp.iniを確認し、エディタで開きます。 「extension = php_ldap.dll」という行を見つけ、セミコロンがある場合はそれを取り出します。そのセミコロンはモジュールを一緒にロードするのを止めます!そのファイルを開いている間に、 'extension_dir'を検索し、それがどのフォルダに設定されているかをメモします。そのフォルダを開き、そこにphp_ldap.dllファイルがあることを確認してください。そうでなければ、それをそこに入れてください。それでもまだ解決しない場合は、サポート用のDLLが不足していますが、そのことはわかりません。どのDLLが欠けているかを見るには、コマンドプロンプトを開き、phpディレクトリに移動して、次の行 'php -m'を実行してください。今すぐいくつかのエラーメッセージを表示する必要があります。醜い、しかし少なくとも彼らはあなたに情報を提供します!リストされているdllを見つけてphpディレクトリにコピーします。 apache / httpdサービスを再起動する必要があります。もう一度 'php -m'を実行すると、エラーがなくなり、Moodleのメッセージが消えます。

LDAPモジュールはどのLDAPサーバーにも接続できません

LDAP-module cannot connect any LDAP servers: 
Server: 'ldap://my.ldap.server/' 
Connection: 'Resource id #26' Bind result: 

ログインしようとしているときにこのメッセージが表示されるのは、Bindユーザー、またはActive Directoryでのアクセス許可が不十分なユーザーアカウントの詳細が誤っているためです。これをテストして解決する最善の方法は、ldp.exeを使用してバインドが成功するまでテストすることです。以下にldp.exeをインストールするための手順があります。プログラムを開き、[ADに接続]をクリックしてサーバー名を入力し、[接続]メニューから[バインド]を選択します。正しいと思う詳細を入力すると、おそらくエラーが返されることがわかります。 「Authenticated as」というメッセージが表示されるまで、アカウントの特権または別のアカウントを調整してみてください。自分のアカウントを使用してADにバインドできることを確認したら、そのユーザー名のDNが正しいことを確認します。バインドに使用したユーザーが見つかるまで、左側のツリーを展開します。その項目を右クリックして[DNのコピー]を選択します。 Moodleのユーザ認証ページに進み、値をldap_bind_dnフィールドに貼り付けます。パスワードを追加すると、ユーザーが問題なくバインドされたことを確認できます。

コンテキストと作成者のための正しいCNの取得

ADに慣れていない人にとって、これは非常に混乱を招く可能性があり、それに慣れている人にとってはそれほど簡単ではありません。また、ldp.exeはあなたの友達です。以下にldp.exeをインストールするための手順があります。それを開き、使用するグループまたはユーザが見つかるまで左側のツリーを展開し、それを右クリックして[DNのコピー]を選択します。 Moodleユーザ認証ページに戻り、その値をldap_contextsまたはldap_creatorsに貼り付けます。

正しいuser_attributeを取得する

デフォルトでは、Moodleはアカウントcn(フルネーム)を使用して確認を行いますが、ほとんどのネットワークはログオンにフルネームを使用しません。推測が簡単で、同じ名前の人が2人いる場合もあります。これがあなたの場合であるならば、あなたはログオンIDのために別のフィールドを見るようにMoodleに言う必要があります。 ldp.exeで、左側のツリーをナビゲートして、ユーザーアカウント、できれば自分のアカウントを見つけます。ツリー内の項目をダブルクリックすると、全詳細が右側の画面にロードされます。ログオンIDが見つかるまで詳細を見て、それに対してリストされている項目を書き留めます。私にとって、そして多くの人にとって、それはsAMAccountNameです。この名前をコピーしてMoodleユーザ認証ページのldap_user_attributeに貼り付けてください。以下にldp.exeをインストールするための手順があります。

ldp.exeサーバーツールのインストール

ldp.exeは、ほとんどのバージョンのWindows Server上のServer Toolsの一部として提供されています。 Windows Serverのインストールディスクを探し、その中にSupport \ Toolsという名前のフォルダを見つけます。実行するとサーバーツールをインストールするSupTools.msiがあります。今すぐSupport Toolsと呼ばれるProgram Filesの下のフォルダがあるはずです。その中にldp.exeがあります。 ldp.exeは、Windows XP Support Toolsからも入手できます。 こちらからMicrosoftからダウンロードできます。または、ldp.exeの単一のダウンロードはこちらから入手できます

Active Directoryの設定例

以下はActive Directoryの設定例です。上記で詳述したように、値はローカルのActive Directory設定によって異なる場合がありますが、ほとんどの場合は適切な出発点となります。

ldap_host_url = ldap://ads.example.com
ldap_version = 3
ldap_preventpassindb = yes
ldap_bind_dn = bind-user@example.com
ldap_bind_pw = bind-password
ldap_user_type = MS ActiveDirectory
ldap_contexts = ou=moodleusers,dc=example,dc=com
ldap_user_attribute = sAMAccountName


ldap_bind_dn値は、メインの指示に示されているCN = bin-user、CN = Users、DC =例、DC = com形式、またはこの例に示されているbind-user@example.com形式のいずれかで機能するはずです。

グローバルカタログ

Moodleは現在、複数のドメインコントローラのサポートを限定しています。具体的には、リストされている各LDAPサーバーに同一の情報セットが含まれていることを想定しています。複数のドメインにユーザーがいる場合、これが問題になります。 MS-ADを使用する際の1つの解決策は、グローバルカタログを使用することです。グローバルカタログは、必要なオブジェクトのドメインが不明な場合にディレクトリ全体を検索するように設計された、MS-ADフォレスト全体の読み取り専用の部分表現として設計されています。

グローバルカタログを有効にする

グローバルカタログは、Windows 2000およびWindows 2003のActive Directoryサーバーで利用できます。有効にするには、[Active Directoryサイトとサービス] MMC(Microsoft管理コンソール)スナップインを開きます。 「サイト」を拡張してから、使用したいアクティブディレクトリフォレストを含むサイトの名前を拡張します。グローバルカタログを有効にするサーバーを展開し、[NTDS設定]を右クリックして[プロパティ]タブをクリックします。有効にするには、[グローバルカタログ]チェックボックスをクリックします。 Windows 2000サーバーでは、サーバーを再起動する必要があります(ただし、プロンプトは表示されません)。 Windows 2003サーバーでは、サーバーを再起動する必要はありません。どちらの場合でも、グローバルカタログがADフォレスト全体の表現を提供する前に、ADフォレストが複製されるのを待つ必要があります。 Active Directoryで行われた変更も、レプリケーションに伴う待ち時間のために少し遅れます。 ADサーバーがファイアウォールで保護されている場合は、グローバルカタログサーバー用にポート3268を開く必要があります。組織でMicrosoft Exchangeを使用している場合、少なくとも1つのドメインコントローラでグローバルカタログが既に有効になっている可能性があります。Exchange2000および2003ではアドレス情報をグローバルカタログに依存しています。リスト)


子ドメイン

組織にメインドメインexample.orgがある場合、スタッフと学生は2つの子ドメインstaff.example.orgとstudents.example.orgに含まれます。 3つのドメイン(example.org、staff.example.org、およびStudents.example.org)にはそれぞれドメインコントローラ(それぞれdc01、dc02、およびdc03)があります。各ドメインコントローラには、所属するオブジェクトのみの完全な書き込み可能な表現が含まれています。そのドメインに。ただし、いずれかのドメインコントローラ(dc01など)でグローバルカタログが有効になっていると(下記参照)、グローバルカタログへのクエリでは、3つのドメインすべてから一致するオブジェクトが表示されます。グローバルカタログは、Active Directoryフォレスト間での複製を通じて自動的に維持されます。たとえば、冗長性や負荷分散が必要な場合は、複数のサーバーで有効にすることもできます。

Moodleでこれを利用して複数のドメインからのログインを許可するのは簡単です。グローバルカタログは、標準のLDAPクエリの389ではなく、ポート3268で動作します。その結果、グローバルカタログがdc01で実行されていると仮定しても、 ' ldap_host_url'ldap://dc01.example.org:3268になります。その他の設定は他のMS-AS認証設定と同じです。

アクセスを許可したい個人の所在地を示すには、 ' ldap_contexts'設定を使用する必要があります。上記の例を少し拡張すると、example.orgドメインでは、ユーザーはすべて「Users」 OU、staff.example.orgドメインでは、ユーザーはドメインのルートにある「Support Staff」 Support Staff」の 2つのOUに属します。 'Teaching Staff' 、およびstudents.example.orgドメインでは、学生は自分が登録した年を示すOUに属しています。これらはすべて'Students' OUの下にあります。その結果、 ' ldap_contexts'の設定は次のようになります。 'OU = Users、DC = example、DC = org; OU =サポートスタッフ、DC =スタッフ、DC =例、DC =組織。 OU =ティーチングスタッフ、DC =スタッフ、DC =例、DC =組織。 OU =学生、DC =学生、DC =例、DC =組織 。 moodleが子OU内を検索できるようにするには、 ' ldap_search_sub'オプションを'Yes'に設定する必要があります。

グローバルカタログには、Microsoftから提供されているPartial Attribute Setで定義されているように、各オブジェクトの属性の部分的な表現しか含まれていません。しかしながら、一般的なMoodleのインストールに役立つ可能性が高い一般的な情報(Forename、Surname、Email Address、sAMAccountNameなど)がセットに含まれています。特定のニーズについては、さまざまな属性を削除または追加するためにスキーマを変更できます。詳細については、Microsoft KB 248717を参照してください。

グローバルカタログはほとんどの場合読み取り専用ですが、問題のオブジェクトを保持しているドメインコントローラに対して標準のLDAPポートを介して更新クエリを実行する必要があります(この例では、学生の詳細を更新するにはStudents.exampleへのLDAPクエリが必要です)。 .orgドメインコントローラ - dc03、グローバルカタログを照会して詳細を更新することはできません。これに対する例外は、Active Directoryフォレストに単一のドメインしかない環境では発生します。この場合、グローバルカタログはドメイン内の各オブジェクトの書き込み可能なフルセットの属性を保持します。しかしながら、Moodle認証を目的として、この場合グローバルカタログを使用する必要はありません。

MaxPageSize設定

検索するActive Directoryオブジェクトの数を変更する

デフォルトでは、Active Directoryは、検索ごとに限られた数のオブジェクトを返す検索のみを許可します。現在のところPHP 5.2.xには、より小さなページ検索を可能にするページコントロールのサポートがないため、MaxPageSize設定を変更して、LDAPクライアント検索が認証ユーザーの数をサポートするのに十分なユーザーオブジェクトを返すようにする必要があります。

PHPバージョン5.4以降、PHPはページ制御をサポートするようになりました。新しいバージョンのLDAP構成設定は、ページ側に値を提供します。この値はActive DirectoryのMaxPageSizeよりも小さい値に設定する必要があります。

スクリプトが正常にすべてのユーザーによって実行されていないことを見つけて、あなたがMSのActive Directory + 1000以上のユーザーがいる場合は、指示に従ってください、ここで両方の今とで(ユーザーのあなたの総数よりも高い数値に設定するのMaxPageSizeを設定しますそれを修正します。これは森全体の設定です。

MS Active Directory + SSL

認証局がインストールされていない場合は、まず次のようにインストールする必要があります。

  1. 「スタート」 - >「 コントロールパネル」 - >「 プログラムの追加と削除」をクリックします。
  2. [ Windowsコンポーネントの追加と削除]をクリックして[ 証明書サービス]を選択します。
  3. 証明機関をインストールするために提供された手順に従ってください。企業レベルは良い選択です。

WindowsインストールCDの\ Support \ toolsディレクトリからsuptools.msiをインストールして、サーバーでSSLが有効になっていることを確認します。サポートツールのインストール後:

  1. 「スタート」 - >「 ファイル名を指定して実行」を選択し、「 名前」フィールドに「 ldp」と入力します。
  2. ldpウィンドウから「 接続」 - >「 接続」を選択して、有効なホスト名とポート番号636を指定してください 。 [SSL]チェックボックスもオンにします。

成功すると、接続に関する情報が得られます。

クライアントサイド設定の詳細については、クライアントサイド(Moodleサーバ)LDAPS有効にするをご覧ください。

関連情報