LDAP認証

この文書はMoodleでLDAP認証を設定する方法を説明します。私たちはMoodleでのLDAPのインストールと管理においてユーザを支援するために基本的な、高度なそしていくつかのトラブルシューティングのセクションをカバーします。

基本シナリオ

ほとんどのインストールで簡単で直接的なアプローチ。

仮定

Moodleは異なるディレクトリ構造、特別な設定などを持つ複数のタイプのLDAPサーバをサポートしています。同じLDAPサーバタイプ(例:MS Active Directory)を使用する場合でも、各サイトは完全に異なるディレクトリ構造を使用してユーザアカウントを保持できます。以下のセクションに設定例を表示することができるように、以下にリストされた特徴を持つ架空の MoodleサイトとLDAPサーバを想定します。

重要なお知らせあなたの MoodleサイトとLDAPサーバの詳細(ディレクトリ構造を含む)を確認し、あなた自身の設定を反映するように設定を調整してください。

  1. あなたのMoodleサイトはhttps://your.moodle.site/にあります。
  2. PHPインストールをLDAP拡張子で設定しました。これはロードされてアクティブ化されており、 http : //your.moodle.site/admin/phpinfo.php (ユーザー「admin」としてログイン)にアクセスすると表示されます。
  3. LDAPサーバーのIPアドレスは192.168.1.100です。
  4. あなたの設定ではSSL(別名LDAPS)でLDAPを使用していません。これにより、特定の操作が機能しなくなる可能性があります(たとえば、MS Active Directoryを使用している場合はデータを更新できません - これ以降のMS-ADなど)が、ユーザー認証のみを行う場合は問題ありません。
  5. あなたが最初にMoodleにログインした時にあなたのユーザが自分のパスワードを変更したくないでしょう。
  6. MS-ADを使用している場合は、認証データのソースとして単一ドメインを使用しています(詳細は付録を参照)。
  7. LDAPツリーのルートとして、最上位の識別名(DN) dc = my、dc = organization、dc = domainを使用しています。
  8. LDAPサーバーにバインドするために使用する、特権のないLDAPユーザーアカウントを持っています。これは特定のLDAPサーバーでは必要ありませんが、MS-ADはこれを必要とし、LDAPサーバーが必要でなくても使用しても問題ありません。 このアカウントとそのパスワードの有効期限が切れていないことを確認し、このパスワードをできるだけ強くします。 Moodleを設定する際に、このパスワードを一度だけ入力する必要があることを忘れないでください。できるだけ推測しにくいようにしてください。このユーザーアカウントのDNがcn = ldap-user、dc = my、dc = organization、dc = domain 、およびパスワードhardtoguesspasswordであるとします。
  9. あなたのMoodleユーザはすべて、 moodleusersという組織単位(OU)にいます。これはあなたのLDAPルートの直下にあります。そのOUのDNはou = moodleusers、dc = my、dc = organization、dc = domainです。
  10. あなたのLDAPユーザのパスワードをMoodleに保存したくないでしょ

LDAP認証を有効にする

管理者は次のようにLDAP認証を有効にできます。

  1. [サイトの管理]> [プラグイン ] > [認証 ] > [認証の管理 ]に移動し、[LDAPサーバー]の横にある目のアイコンをクリックします。有効にすると、グレーアウトされなくなります。
  2. 設定リンクをクリックし、必要に応じて設定し(下記の情報を参照)、[変更を保存]ボタンをクリックします。
LDAPserversettings.png

今、あなたはただ値を記入する必要があります。一歩一歩進みましょう。

LDAPサーバー設定

フィールド名記入する値
ホストURL LDAPサーバーのIPアドレスは192.168.1.100 なので 、 " ldap://192.168.1.100 "(引用符は含みません )、または単に " 192.168.1.100 "と入力します(一部のユーザーは、特にMS Windowsでは最初の構文にアクセスできない場合があります)。サーバー)。
バージョン本当に古いLDAPサーバーを使っているのでなければ、 バージョン3があなたが選ぶべきものです。
LDAPエンコード LDAPサーバーで使用されるエンコードを指定してください。たぶんutf-8です。

目次

バインド設定

フィールド名記入する値
パスワードをキャッシュしないあなたがMoodleのデータベース内のユーザのパスワードを保存したくないので 、ここで[はい]を選択します。
識別名これは上記で定義したバインドユーザの識別名です。 「 cn = ldap-user、dc = my、dc = organization、dc = domain 」と入力します(引用符は含みません)。
パスワードこれは上記で定義されたバインドユーザーパスワードです。 " hardtoguesspassword "と入力します(引用符は含みません )。

目次

ユーザー検索設定

フィールド名記入する値
ユーザータイプ選択してください:
  • 小説のeDirectory LDAPサーバは、NovellのeDdirectoryを実行している場合。
  • LDAPサーバーがRFC-2307互換のLDAPサーバーを実行している場合は、 posixAccount(rfc2307)( Mac OS Xサーバーを含む、OpenLDAPを実行しているサーバーを選択してください)。
  • LDAPサーバーがRFC-2307bis互換のLDAPサーバーを実行している場合は、 posixAccount(rfc2307bis)
  • ご使用のLDAPサーバーがSAMBAの3.x LDAPスキーマ拡張を使用して実行されていてそれを使用したい場合は、 sambaSamAccount(v.3.0.7)
  • ご使用のLDAPサーバーがMicrosoftのActive Directory(MS-AD)を実行している場合はMS ActiveDirectory
コンテキストあなたのMoodleユーザ全員が見つかったコンテキスト(コンテナ)のDN。ここにou = moodleusers、dc = my、dc = organization、dc = domainと入力してください。

Mac OS X Serverでは、これは通常cn = users、dc = my、dc = organization、dc = domainです。

サブコンテキストを検索する ou = moodleusers、dc = my、dc = organization、dc = domainからぶら下がっているサブ組織単位(サブコンテキスト)があり、Moodleにも検索させたい場合は、これをyesに設定します 。そうでなければ、これをnoに設定します。
間接参照エイリアス時々あなたのLDAPサーバはあなたが探している本当の価値がLDAPツリーの別の部分にあることをあなたに告げるでしょう(これは別名と呼ばれます)。 Moodleにエイリアスを「参照解除」して元の場所から実際の値を取得するには、これをyesに設定します 。 Moodleがそれを間接参照したくない場合は、これをnoに設定してください。 MS-ADを使用している場合は、これをnoに設定してください。
ユーザー属性 LDAPツリー内のユーザーの名前付け/検索に使用される属性。このオプションは、上で選択したユーザータイプの値に基づいてデフォルト値を取ります。 あなたが特別な何かを必要としないのであれば、あなたはこれを記入する必要はありません

ちなみに、通常はcn (Novell eDirectoryとMS-AD)またはuid (RFC-2037、RFC-2037bisとSAMBA 3.x LDAP拡張)ですが、MS-ADを使用しているのであれば可能ですNTLM SSOを使用する予定の場合は、必要に応じてsAMAccountName (Windows 2000より前のログオンアカウント名)を使用します

訂正 :MS-ADではsAMAccountNameはとにかく使用されるべきです。デフォルト値( cn )では、ADユーザーはフルネーム/パスワード(ユーザー名: John Doe 、パスワード: john's_pass )でログインする必要があります。ユーザーが代わりにドメインユーザー名(ユーザー名: johndパスワード: john's_pass )でログインできるようにする場合は、 sAMAccountNameを使用してください。残念ながら、DOMAIN \ userまたはuser@domain.comでログインしてもうまくいきません。

注: [管理]> [サイト管理]> [セキュリティ]> [ サイトポリシー]で、ユーザー名に外字を許可することを検討してください。

メンバー属性特定のグループのメンバーをリストするために使用される属性。このオプションは、上記で選択したユーザータイプの値に基づいてデフォルト値を取ります。 あなたが特別な何かを必要としないのであれば、あなたはこれを記入する必要はありません。

ちなみに、通常の値はmembermemberUidです。

メンバー属性はdnを使用します member属性に識別名が含まれているか(1)含まれていないか(0)。このオプションは、上記で選択したUser typeの値に基づいてデフォルト値を取ります。 あなたが特別な何かを必要としないのであれば、あなたはこれを記入する必要はありません。
オブジェクトクラスユーザーの検索に使用されるLDAPオブジェクトのタイプ。このオプションは、上で選択したユーザータイプの値に基づいてデフォルト値を取ります。 あなたが特別な何かを必要としないのであれば、あなたはこれを記入する必要はありません。
  • 空白のままにした場合は、上記で選択したユーザータイプに基づくデフォルト値が使用されます(下記参照)。
  • "objectClass = some-string"を指定した場合、フィルタとして "(objectClass = some-string)"が提供されます。
  • "("で始まらない値を指定した場合は、 "objectClass"に設定する必要がある値と見なされます。したがって、 "some-string"を指定した場合は、 "(objectClass = some-フィルタとして) "
  • "("で始まる文字列を指定した場合は、それがそのまま渡されます。したがって、 "(&(objectClass = user)(enabledMoodleUser = 1))"を指定した場合は、それがフィルタとして渡されます。

:最後の場合、その機能は対話型ログインで使用できます。

以下は、各ldap_user_type値のデフォルト値です。

  • Novel eDirectoryの場合は(objectClass = user)
  • RFC-2037およびRFC-2037bisの場合は(objectClass = posixAccount)
  • SAMBA 3.0.x LDAP拡張機能の場合は(objectClass = sambaSamAccount)
  • MS-ADの場合は(objectClass = user)
  • デフォルトは(objectClass = *)

LDAPサーバーへの変更を書き込まないように指定した場合でも、LDAPサーバーの更新に関する問題についてエラーが発生した場合は、ldapオブジェクトクラスを*に設定してみてください。https://moodle.org/mod/forumを参照してください。この問題に関する議論は/discuss.php?d=70566

パスワード変更を強制する

フィールド名記入する値
パスワード変更を強制する メモ:この設定は、LDAPユーザーの同期タスクでユーザーを作成するときにのみ使用されます。あなたのユーザがmoodleへの最初のログインの一部として作成されている場合は使用されません

あなたがあなたのユーザにMoodleへの最初のログイン時にパスワードの変更を強制することを望むならば、これをはいに設定してください。そうでなければ、これをnoに設定します。変更を強いられるパスワードは、LDAPサーバーに保存されているものです。

初回ログイン時にユーザーが自分のパスワードを変更したくない場合は、この設定を[ いいえ]のままにしてください。

標準のパスワード変更ページを使用する
  • これを[ はい]に設定すると、ユーザが自分のパスワードを変更するたびに、Moodleは独自の標準パスワード変更ページを使用するようになります。
  • これをいいえに設定すると、Moodleは "パスワード変更URL"というフィールドで指定されたページを使用します(下記参照)。

あなたのLDAPパスワードをMoodleから変更するにはLDAPS接続が必要になるかもしれないことを覚えておいてください(これは実際にはMS-ADのための要件です)。それに加えて、上で指定されたbindユーザーは他のユーザーのパスワードを変更するのに必要な権利を持っていなければなりません。

また、MoodleからNovell eDirectoryおよびActive Directory以外のパスワードを変更するためのコードはほとんどテストされていないため、他のLDAPサーバでは動作する場合と動作しない場合があります。

パスワードフォーマット新しいパスワードをLDAPサーバーに送信する前に暗号化する方法を指定します。プレーンテキスト、MD5ハッシュ、またはSHA-1ハッシュ。たとえばMS-ADはプレーンテキストを使用します。
パスワード変更URL ここで、ユーザーが回復できる場所を指定したり、忘れた場合はユーザー名/パスワードを変更したりできます。これは、ログインページとそのユーザーページのボタンとしてユーザーに提供されます。空白のままにすると、ボタンは印刷されません。

LDAPパスワードの有効期限設定

フィールド名記入する値
有効期限
  • これをいいえに設定すると、Moodleはユーザのパスワードが期限切れかどうかをチェックしません。
  • これをLDAPに設定すると、MoodleはユーザのLDAPパスワードが期限切れかどうかを確認し、パスワードが期限切れになる前に何日か警告します。パスワードの有効期限が切れると、 "あなたのパスワードの有効期限が切れました"というメッセージが表示されます。もしユーザが自分のパスワードをMoodleから変更することができれば、それを選択できます。

現在のコードは、Novell eDirectory LDAPサーバーとMS-ADのみを扱います。

そのため、Novell eDirectoryサーバまたはMS-ADを使用していない限り、ここで[ いいえ]を選択します。

期限切れの警告この値は、パスワードの有効期限が切れる前に、パスワードの有効期限が切れることをユーザーに警告する日数を設定します。
有効期限属性パスワードの有効期限を確認するために使用されるLDAPユーザー属性。このオプションは、上で選択したユーザータイプの値に基づいてデフォルト値を取ります。 あなたが特別な何かを必要としないのであれば、あなたはこれを記入する必要はありません。
グレースログインこの設定は、Novell eDirectoryに固有のものです。 Yesに設定すると、LDAP猶予ログインサポートを有効にします。パスワードの有効期限が切れた後、ユーザーは猶予ログイン数が0になるまでログインできます。

そのため、Novell eDirectoryサーバを使用していてグレースログインのサポートを許可したくない場合は、ここで[ いいえ]を選択してください。

猶予ログイン属性この設定は、現在コードでは使用されていません(Novell eDirectoryに固有のものです)。

だからあなたはこれを記入する必要はありません。

ユーザー作成を有効にする

フィールド名記入する値
外部でユーザーを作成する新規(匿名)ユーザーは、外部LDAPサーバー上にユーザーアカウントを自己作成し、それらをEメールで確認することができます。これを有効にする場合は、ユーザー作成のためのモジュール固有のオプションも設定し、 サイト管理>プラグイン>認証>認証の管理の auth_instructionsフィールドにいくつかの指示を記入することを忘れないでください。そうでなければ、新しいユーザーは新しいアカウントを自分で作成することができません。

Novell eDirectoryとMS-ADは外部からユーザを作成できます。 RFC-2307準拠のサーバーにユーザーを作成することもできます。

新規ユーザーのためのコンテキストユーザーが作成されるコンテキストを指定してください。セキュリティの問題を防ぐために、このコンテキストは他のユーザーのコンテキストとは異なる必要があります。

システムロールを割り当てる

フィールド名記入する値
システムロールマッピングこのセクションでは、システムコンテキストで割り当てることができるすべてのロールをリストします。デフォルトでは、これは "マネージャコンテキスト"と "コース作成者コンテキスト"になりますが、 ロール定義でカスタマイズ可能です。

LDAPユーザーを任意のロールに割り当てるには、そのロールをシステムレベルで付与する必要があるすべてのユーザーを含むDNを指定します。

このDNは通常、作成者になりたい各ユーザーの「memberUid」属性を持つposixGroupです。あなたのグループがクリエイターと呼ばれる場合は、 cn = creators、ou = moodleusers、dc = my、dc = organization、dc = domainと入力してください。各memberUid属性には、作成者になることを許可されているユーザーのCNが含まれています。ユーザーの完全なDNを使用しないでください(例:memberUid:cn = JoeTeacher、ou = moodleusers、dc-my、dc = organization、dc = domainではなく、 memberUid:JoeTeacher )。

eDirectoryでは、グループのobjectClassは(デフォルトでは) posixGroupではなくgroupOfNamesでありそのmember属性はmember、 memberUidではなく、その値は問題のユーザのフルDNです。おそらくこのフィールドを使用するようにMoodleのコードを修正することができますが、もっと良い解決策はposixGroupの新しいobjectClass属性をあなたの作成者グループに追加し、各作成者のCNをmemberUid属性に入れることです。

MS Active Directoryでは、作成者が参加するためのセキュリティグループを作成し、それらをすべて追加する必要があります。上記のLDAPコンテキストが「ou = staff、dc = my、dc = org」の場合、グループは「cn = creators、ou = staff、dc = my、dc = org」になります。一部のユーザーが他のコンテキストからのもので、同じセキュリティグループに追加されている場合は、最初のコンテキストの後に同じ形式を使用して、これらを個別のコンテキストとして追加する必要があります。

このセクションは、Moodle 3.3の "コース作成者"セクションに代わるものです。アップグレードプロセスでは、指定されたすべてのDNを新しい方法に移行する必要があります。

ユーザーアカウントの同期

フィールド名記入する値
extユーザーを削除しましたユーザーが外部ソースから削除されたときに一括同期中に内部ユーザーアカウントをどう処理するかを指定します。一時停止したユーザーのみがextソースに表示された場合に自動的に復活します。

NTLM SSO

フィールド名記入する値
有効にする NTLM SSOを使用する場合は(NTLM認証で詳細を参照 )、ここで[ はい]を選択します。それ以外の場合は、 いいえを選択します。
サブネット NTLM SSOを使用するクライアントのサブネットを指定します(で詳細を参照してくださいNTLM_authentication )。
MS IEのファーストパス? すべてのクライアント(またはほとんどのクライアント)がMS Internet Explorerを使用している場合は、このオプションを設定してSSOログインの特定の手順を省略し、ログイン時間を短縮することができます。これはMS Internet Explorerでしか動作しませんが、他のブラウザを適切な方法で処理します(これらは自動的にプレーンログインページに送信されます)。

データマッピング

フィールド名記入する値
ファーストネーム LDAPサーバー内のユーザーのファーストネームを保持する属性の名前。これは通常givenNameまたはdisplayNameです。

この設定はオプションです

LDAPサーバー内のユーザーの姓を保持する属性の名前。これは通常snです。

この設定はオプションです

電子メールアドレス LDAPサーバー内のユーザーのEメールアドレスを保持する属性の名前。これは通常メールです。

この設定はオプションです

市/町 LDAPサーバー内のユーザーの市区町村を保持する属性の名前。これは通常l (小文字のL)またはlocalityName (MS-ADでは無効)です。

この設定はオプションです

LDAPサーバー内のユーザーの国を保持する属性の名前。これは通常cまたはcountryNameです(MS-ADでは無効)。

この設定はオプションです

言語 preferredLanguage

この設定はオプションです

説明 説明

この設定はオプションです

ウェブページ この設定はオプションです
ID番号

この設定はオプションです

機関

この設定はオプションです

部門 LDAPサーバー内のユーザーの部署名を保持する属性の名前。これは、通常はdepartmentNumber (posixAccountおよびeDirectoryの場合)またはdepartment (MS-ADの場合)です。

この設定はオプションです

電話番号1 LDAPサーバー内のユーザーの電話番号を保持する属性の名前。これは通常電話番号です。

この設定はオプションです

電話番号2 LDAPサーバー内のユーザーの追加の電話番号を保持する属性の名前。これは、 homePhonemobilepagerfacsimileTelephoneNumber、またはその他のものになります。

この設定はオプションです

住所 LDAPサーバー内のユーザーの番地を保持する属性の名前。これは通常通り streetAddressまたはstreet 'です。

この設定はオプションです

カスタムユーザープロファイルフィールド

[サイトの管理]> [ユーザー]> [アカウント]> [ユーザープロファイル]フィールドで作成したユーザープロファイルフィールドは、[データマッピング]フィールドリストの[ アドレス]フィールドの後に自動的に表示されます。例を参照してください。 ldapcustomuserprofilefields.jpg

LDAPユーザー同期ジョブを有効にする

LDAPユーザー同期ジョブ( \ auth_ldap \ task \ sync_taskスケジュールタスク (Moodle 3.0の新機能。以前はCLIスクリプトがありました。詳細はMDL-51824をご覧ください)は、ユーザー情報の作成と更新、およびLDAPの一時停止と削除を担当します。アカウント

LDAPサーバー認証を有効にした後、管理者は次のようにLDAPユーザー同期ジョブを有効にして設定する必要があります。

  1. サイト管理」>「サーバー」>「スケジュールされたタスク」に進み、LDAPユーザーの同期ジョブの反対側にある歯車のアイコンをクリックします。
  2. 希望の実行頻度を選択し、無効のチェックボックスをオフにしてタスクを有効にします。
警告: LDAPユーザーの同期ジョブを有効にする(およびデータベースとmoodledataフォルダーのバックアップを作成する)前に、すべてのLDAP設定が正しく機能していることを確認することが重要です。


スクリプトがすべてのユーザーに適切に実行されておらず、各LDAPコンテナーに1000人を超えるユーザーがいる場合は、デフォルトではMS ADなどの一部のLDAPストアが一度に1000人のユーザーしか返送しないためです。 5.4へのLDAPの結果に対するページサポートを実装しませんでした。 PHP 5.4以降にアップグレードすると、Moodleはすべてのユーザを正しく取得します。 PHP 5.4にアップグレードできない場合は、 https://support.microsoft.com/kb/315071に記載されている手順に従って、Active DirectoryのMaxPageSize設定をユーザーの総数よりも大きい数に設定することができます(両方ともそれを修正するこれは森全体の設定です。

Active Directoryのヘルプ

Active Directoryは、マイクロソフトのディレクトリサービスです。 Windows 2000 Serverおよびそれ以降のバージョンのオペレーティングシステムに含まれています。下記の科目についての詳細は、 こちらをご覧ください

  • 警告:PHP LDAPモジュールは存在していないようです
  • LDAPモジュールはどのLDAPサーバーにも接続できません
  • コンテキストと作成者のための正しいCNの取得
  • 正しいuser_attributeを取得する
  • ldp.exeサーバーツールのインストール
  • Active Directoryの設定例
  • MS Active Directoryの子ドメインとグローバルカタログ
  • グローバルカタログを有効にする
  • Moodle 1.8のActive Directory
  • MS Active Directory + SSL

高度なシナリオ - 複数のサーバーまたは場所

複数のLDAPサーバー、またはLDAPツリー内の複数の場所(コンテキスト)を含む大規模インストール用。

LDAPディレクトリ接続を回復力のあるものにする

  • ldap_host_urlフィールドに複数の名前を入力すると、システムに何らかの回復力を与えることができます。単にシンタックスを使う:
 ldap://my.first.server; ldap://my.second.server; ...

もちろん、これは、すべてのサーバが同じディレクトリ情報を共有している場合、eDirectoryを使用してサーバがすべての関連ツリーパーティションを確実に実行できるようにする必要がある場合、またはActive Directoryを使用して必要な情報が同じである場合にのみ有効です。複製 - これが当てはまる場合は、マルチドメイン環境での注意事項を参照してください。

LDAP認証のMoodle 1.5 - 1.6実装には1つの欠点があります:auth_ldap_connect()関数はラウンドロビンモードではなく、サーバを順番に処理します。したがって、プライマリサーバに障害が発生した場合、次のサーバに切り替える前に接続がタイムアウトするのを待つ必要があります。

関連項目: 複数のLDAPサーバーを使用する - 学生たちは別のドメインフォーラムでディスカッションをしています

マルチドメインAD環境を使用する

  • 複数のドメインでActive Directoryを実行していて、複数のドメインにユーザーがいる場合は、グローバルカタログサーバーを見るようにMoodleを設定する必要があります。具体的には、最上位ドメインのグローバルカタログサーバーです。これは、この種のActive Directoryレイアウトの簡単な例です。
 my.domain.ca(ルートADドメイン)
| -  dc1.my.domain.ca(ドメインコントローラ)
| -  dc2.my.domain.ca(ドメインコントローラ)
|
| -   -  students.my.domain.ca(サブADドメイン)
| -   -   -  dc1.students.my.domain.ca(ドメインコントローラ)
| -   -   -  dc2.students.my.domain.ca(ドメインコントローラ)
|
| -   -  faculty.my.domain.ca(サブADドメイン)
| -   -   -  dc1.faculty.my.domain.ca(ドメインコントローラ)
| -   -   -  dc2.faculty.my.domain.ca(ドメインコントローラ)

この例では、最上位ドメイン(my.domain.ca)と2つのサブドメインがあります。 1つのサブドメインは教職員アカウント用(faculty.my.domain.ca)、もう1つは学生アカウント用(Students.my.domain.ca)です。それらのそれぞれの下に表示されているのは、2つのドメインコントローラです。

上記の例を使用して、SSL経由でグローバルカタログにアクセスするために次のものを使用します。

 ldaps://my.domain.ca:3269 /

非SSL接続を介してグローバルカタログにアクセスしたい場合は、次のようにします。

 ldap://my.domain.ca:3268 /

このように設定しなかった場合は、次のようなエラーが表示されます。

 [木5月26日15時23分53秒] [エラー] [クライアント192.168.xxx.xxx] PHP警告:ldap_search()[<a href='function.ldap-search'> function.ldap-search </a>] ]:検索:部分的な結果と紹介が241行目の/xxx/xxx/moodle20/lib/ldaplib.phpで参照されています。参照元: http ://moodle.my.domain.ca/moodle20/login/index.php
 [Thu May 26 15:23:53 2011] [エラー] [クライアント192.168.xxx.xxx] PHP警告:ldap_first_entry():与えられた引数は/ xxx / xxx / moodle20 / lib / ldaplibの有効なLDAP結果リソースではありません。 248行目のphp、リファラー: http : //moodle.my.domain.ca/moodle20/login/index.php

LDAPツリーで複数のユーザーの場所(コンテキスト)を使用する

ディレクトリツリーがフラットな場合、つまり、すべてのユーザーアカウントがou = people、dc = my、dc = organization、dc = domain、またはou = people、o = myorgの各コンテナにある場合は、複数のユーザーロケーションを使用する必要はありません。

逆に、ACL管理を使用してユーザー管理を委任すると、ユーザーはou = students、ou = dept1、o = myorgou = students、ou = dept2、o = myorgのようなコンテナに格納される可能性があります。 ...

それから別の方法があります。

  • ldap_search_sub属性をyesに設定してo = myorgレベルを調べ ます
  • ldap_contextをou = students、ou = dept1、o = myorgに設定します。 ou =学生、ou = dept2、o = myorg

これら2つのソリューションのどちらを選択するかは、結果がディレクトリツリーの構造とLDAPソフトウェアのインデックス作成機能に大きく依存するため、ある種のベンチマークを前提しています。そのような深いツリーでは、2人のユーザーが同じ共通名 (cn)を共有し、別の識別名を持つ可能性があることにだけ注意してください。そうすると、2番目の解法だけが決定論的な結果になります(常に同じユーザーに戻ります)。

LDAPSの使用(LDAP over SSL)

ディレクトリサーバーでLDAPSを有効にする

あなたのMoodleサーバでLDAPSを有効にする

サーバーでLDAPSを有効にするのは難しい場合があります。多くの場合、問題が発生している場所を特定するのは困難です。 WindowsとLinux、さらにLinuxのバージョンやディストリビューションにも違いがあります。

まだ行っていない場合は、ディレクトリサーバーへのSSL接続を確立するためのアプローチを決める必要があります。

  • 未確認の自己署名証明書を使用したSSL接続

あなた自身のSSL証明書を生成し、それが有効でないという事実を無視するようにあなたのMoodleサーバに指示することができます。あなたが接続しているサーバが偽物ではないことをあなたが確信することができないので、このセットアップは他のものほど安全ではありません。

  • 信頼できる自己署名証明書を使用したSSL接続

あなたのディレクトリサーバーであなた自身のSSL証明書を生成し、それをあなたのMoodleサーバにインストールすることでこの証明書を明確に信頼することができます。

  • インターネット信頼性のある認証局(CA)からの検証済み証明書によるSSL接続

この方法では、LDAPサーバーにインターネットベースのCAからの証明書がインストールされています。つまり、ディレクトリサーバーにはインターネットアドレスとホスト名があります。あなたのMoodleサーバは認証局を信頼し、インターネットにアクセスできる必要があります。このアプローチは通常証明書のコストを招くのであまり使用されず、あなたのディレクトリサーバーとMoodleサーバーをインターネットに公開する必要があります。

Linuxサーバー

これらの手順は、信頼できる自己署名証明書を使用してリンクを確立するためのものです。

注:Red Hat Enterprise Linux 6サーバー用に作成された他のLinuxディストリビューションでは、特にSSL証明書とOpenLdap設定ファイルの場所が異なる場合がありますが、コアプリンシパルは同じです。

ディレクトリサーバーがオンラインで、LDAPSポート(636)でSSL接続を受け入れていることを確認するには、tryを使用できます。

 openssl s_client –connect <LDAPサーバーのIPアドレス>:636

あなたのディレクトリサーバの証明書(.crt)を取得し、Moodleサーバのssl証明書ディレクトリにアップロードしてください。RHEL6では、これは/ etc / ssl / certsにあります。

「DER」X509証明書を「PEM」公開鍵証明書に変換します。

 openssl x509 -in my_server_certificate.cer -inform DER -out my_server_certificate.pem -outform PEM

c_rehashを使って証明書ハッシュを作成する

 c_rehash

c_rehashがインストールされていない場合は、次のようにインストールします。yum install / usr / bin / c_rehash

DNS名でLDAPSサーバーにアクセスできることを確認してください。これは、ホストファイル(/ etc / hosts)にエントリを追加することを意味します。

 <LDAPサーバーのIPアドレス> my_server.mydomain.school

証明書を確認して、正しくインストールされていることを確認してください。

 openssl verify -verbose -CApath / etc / ssl / certs /etc/ssl/certs/my_server_certificate.pem
/etc/ssl/certs/my_server_certificate.pem:OK

これで、SSLを介してエラーなくLDAPSサーバーに接続できるはずです。

 openssl s_client –connect <LDAPサーバーのDNS名>:636

OpenLDAPの設定を編集してください。RHEL6では/etc/openldap/ldap.confにあります。

 #CA証明書の場所を定義します
TLS_CACERT /etc/ssl/certs/my_server_certificate.pem
TLS_CACERTDIR / etc / ssl / certs

最後に、Moodleがldapsを使用するように設定する前に、Apacheを再起動する必要があるかもしれません。// <サーバDNS名>

 httpd -k restart

Windowsサーバー

これらの手順は、未確認の自己署名証明書を使用してリンクを確立するためのものです。

PHPのOpenLDAPエクステンションにSSLサーバー証明書チェックを無効にするように指示するには、 ' C:\ OpenLDAP \ sysconf \'という名前のディレクトリを作成する必要があります。このディレクトリに、次の内容のldap.confという名前のファイルを作成します。

 TLS_REQCERTはしない

(PHP 5.3.xの特定のバージョンを使用している場合、他の場所ファイルを配置する必要があるかもしれませ 。PHPbug#48866を参照してください

これで、LDAPサーバーに接続するときにldaps://を使用できるはずです。

付録

リソース制限の設定RedHat Directory Server

操作属性は、コマンドラインを使用してバインドユーザーDNに設定できます。単にldapmodifyを使って次の属性を追加することができます。

属性名説明
nsLookThroughLimit 検索操作について調べられる項目数を指定します。この属性に値-1を設定すると、制限がなくなります。
nsSizeLimit 検索操作に応答してサーバーがクライアントアプリケーションに返す最大エントリ数を指定します。この属性に値-1を設定すると、制限がなくなります。
nsTimeLimit サーバーが検索操作の処理に費やす最大時間を指定します。この属性に値-1を設定すると、制限時間がなくなります。
nsIdleTimeout 接続が切断されるまでにサーバーへの接続がアイドル状態になることができる時間を指定します。値は秒単位で表示されます。この属性に値-1を設定すると、制限がなくなります。
 LDAPコンソールのコマンドライン

 ldapmodify -h redhat_dir_server -p 389 -D "cn =ディレクトリマネージャ" -w secretpwd

 dn:uid = MoodleAdmin、ou =システム、dc = myschool、dc = edu
 変更タイプ:修正
 追加:nsSizeLimit
 nsSizeLimit:1000
 

質問は?

moodle.orgの認証フォーラムに投稿してください。

関連情報

フォーラムディスカッション: