Moodle 5.3 日本語ドキュメント(第一次翻訳):ほぼすべてのページが日本語に翻訳されました。まだ第一次翻訳のため、不自然な表現や誤訳が残っている可能性があります。お気づきの点があれば、ページコメントでお知らせいただくか、直接編集してください。スクリーンショットの多くは、まだ英語版の画面のままです。以前のバージョンの日本語ドキュメントは、バージョンメニューからご覧いただけます。
Moodle 5.3 Japanese documentation (first-pass translation): almost all pages have now been translated into Japanese. As this is a first pass, some wording may read unnaturally or be mistranslated. If you notice anything, please leave a page comment or edit the page directly. Most screenshots still show the English interface. Japanese documentation for earlier versions is available from the version menu.

Active Directory

提供: MoodleDocs
移動先:案内、検索

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


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

警告: PHP LDAPモジュールがインストールされていないようです。インストールおよび有効にされているかご確認ください。

通常、これはメインのLDAP DLL、または補助的なDLLのいずれかが見つからないことを意味します。 まずはメインのDLL自体から見ていきましょう。 http://(moodleserver)/admin/phpinfo.phpにアクセスして「Configuration File (php.ini) Path」フィールドを確認し、どの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: 

ログインしようとしたときにこのメッセージが表示されるのは、バインドユーザの詳細が正しくないか、Active Directoryでユーザアカウントの権限が不足していることが原因です。これをテストして解決する最良の方法は、ldp.exeを使用して、成功するまでバインドをテストすることです。ldp.exeのインストール手順は以下にあります。 プログラムを開き、サーバ名を指定して「Connect」でADに接続してから、「Connection」メニューで「Bind」を選択します。正しいと思われる詳細を入力すると、おそらくエラーが返されます。「Authenticated as」メッセージが返されるまで、アカウントの権限を調整するか、別のアカウントを試してください。 アカウントをADへのバインドに使用できることを確認したら、そのユーザ名のDNが正しいかどうかを確認します。バインドに使用したユーザが見つかるまで、左側のツリーを展開します。その項目を右クリックし、「Copy DN」を選択します。Moodleの「ユーザ認証」ページに移動し、ldap_bind_dnフィールドに値を貼り付けます。パスワードを追加すれば、ユーザが正常にバインドしていると安心できます。

コンテクストおよび作成者の正しいCNの取得

ADに詳しくない人にとっては非常にわかりにくいかもしれません。詳しい人にとっても、それほど簡単ではない場合があります。ここでもldp.exeが役に立ちます。ldp.exeのインストール手順は以下にあります。 ldp.exeを開き、使用したいグループまたはユーザが見つかるまで左側のツリーを展開し、それを右クリックして「Copy 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で、サーバツールの一部として提供されています。Windows Serverのインストールディスクを用意し、その中にあるSupport\Toolsというフォルダを探します。そこにSupTools.msiがあり、これを実行するとサーバツールがインストールされます。これで、Program Filesの下にSupport Toolsというフォルダができ、その中にldp.exeがあるはずです。ldp.exeはWindows XPサポートツールにも含まれており、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=example,DC=com形式と、この例に示されているbind-user@example.com形式のどちらでも機能するはずです。

グローバルカタログ

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

グローバルカタログの有効化

グローバルカタログは、Windows 2000およびWindows 2003のActive Directoryサーバで利用できます。有効にするには、「Active Directory サイトとサービス」MMC(Microsoft Management Console)スナップインを開きます。「Sites」を展開し、続いて使用したいActive Directoryフォレストを含むサイトの名前を展開します。グローバルカタログを有効にしたいサーバを展開し、「NTDS Settings」を右クリックして「プロパティ」タブを選択します。有効にするには、「グローバル カタログ」チェックボックスをクリックするだけです。Windows 2000サーバではサーバの再起動が必要です(再起動を促すメッセージは表示されません)。Windows 2003サーバでは、サーバを再起動する必要はありません。いずれの場合も、グローバルカタログがADフォレスト全体を表すようになるまでには、通常ADフォレストのレプリケーションを待つ必要があります。Active Directoryで行った変更も、レプリケーションに伴う遅延のため、少し遅れて反映されます。ADサーバがファイアウォールで保護されている場合は、グローバルカタログサーバ用にポート3268を開放する必要があります。 組織でMicrosoft Exchangeを使用している場合は、少なくとも1台のドメインコントローラですでにグローバルカタログが有効になっている可能性が非常に高いです。Exchange 2000および2003はアドレス情報をグローバルカタログに依存しており、ユーザもGAL(グローバルアドレス一覧)を使用する際にグローバルカタログにアクセスします


子ドメイン

組織にメインドメインexample.orgがあり、スタッフと学生がstaff.example.orgとstudents.example.orgという2つの子ドメインに含まれているとします。3つのドメイン(example.org、staff.example.org、students.example.org)には、それぞれドメインコントローラ(順にdc01、dc02、dc03)があります。各ドメインコントローラには、そのドメインに属するオブジェクトのみについて、書き込み可能な完全な表現が含まれています。しかし、ドメインコントローラの1つ(たとえば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ドメインでは、ユーザはドメインのルートにある2つのOU、 'Support Staff' と 'Teaching Staff' にいます。students.example.orgドメインでは、学生は入学した年を示すOUにいて、それらのOUはすべて 'Students' OUの下にあります。したがって、'ldap_contexts'設定は次のようになります: 'OU=Users,DC=example,DC=org; OU=Support Staff,DC=staff,DC=example,DC=org; OU=Teaching Staff,DC=staff,DC=example,DC=org; OU=Students,DC=students,DC=example,DC=org.' Moodleが子OU内を検索できるように、'ldap_search_sub'オプションを 'Yes' に設定してください。

なお、グローバルカタログには、Microsoftが提供する部分属性セット(Partial Attribute Set)で定義されているとおり、各オブジェクトの属性の一部しか含まれていません。ただし、一般的なMoodleインストールで役立つと思われる共通情報(名、姓、メールアドレス、sAMAccountNameなど)は、このセットに含まれています。特定のニーズに応じて、スキーマを変更してさまざまな属性を削除または追加できます。詳細については、MicrosoftのKB248717を参照してください。

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

MaxPageSize設定

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

デフォルトでは、Active Directoryは、1回の検索で返されるオブジェクト数が制限された検索のみを許可します。現在、PHP 5.2.xには小さなページ単位での検索を可能にするページコントロールのサポートがないため、認証するユーザ数に対応できるだけのユーザオブジェクトをLDAPクライアントの検索で返せるように、MaxPageSize設定を変更する必要がある場合があります。

なお、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ウィンドウでConnection > Connectを選択し、有効なホスト名とポート番号636を指定します。また、SSLチェックボックスも選択します。

成功すると、接続に関する情報が表示されます。

クライアント側の設定の詳細については、クライアント側(Moodleサーバ)でのLDAPSの有効化を参照してください。

関連項目