LDAP認証

提供:MoodleDocs
2021年3月23日 (火) 06:23時点におけるToshihiro KITA (トーク | 投稿記録)による版 (→‎LDAPユーザの同期ジョブを有効にする)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
移動先:案内検索

このドキュメントでは、MoodleでLightweight Directory Access Protocol(LDAP)認証を設定する方法について説明します。ユーザがMoodleでLDAPをインストールおよび管理するのを支援するために、基本、高度、およびいくつかのトラブルシューティングのセクションをカバーしています。

基本シナリオ

ほとんどのインストールに対応した、シンプルでわかりやすいアプローチです。

前提条件

Moodleは、異なるディレクトリ構造、特別な構成設定などを持ついくつかのタイプのLDAPサーバをサポートします。同じLDAPサーバタイプ(MS Active Directoryなど)を使用している場合でも、各サイトは完全に異なるディレクトリ構造を使用してユーザアカウントを保持できます。以下のセクションで設定例を示すために、ここでは、以下の特徴を持つ 仮想 のMoodleサイトおよびLDAPサーバを想定しています。MoodleサイトおよびLDAPサーバを想定しています。


重要な注意 : 必ず確認してください あなた(そのディレクトリ構造を含め、)MoodleサイトとLDAPサーバの詳細と、独自の設定を反映するために、設定を調整します。

  1. あなたのMoodleサイトは http://your.moodle.site/ にあります。
  2. LDAP拡張機能を使用してPHPインストールを構成しました。ロードされてアクティブ化され、http://your.moodle.site/admin/phpinfo.php(ユーザ 'admin' としてログイン)に移動すると表示されます。
  3. LDAPサーバのIPアドレスは 192.168.1.100 です。
  4. 設定でSSL付きのLDAP(LDAPSとも呼ばれます)を使用していません。これにより、特定の操作が機能しなくなる可能性があります(たとえば、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ユーザは、LDAPルートのすぐ下にある moodleusers と呼ばれる組織単位(OU)にいます。その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のデータベースに保存 したくない ので、ここでは Yes を選択してください。
識別名 これは、上記で定義されたバインドユーザの識別名です。"cn=ldap-user,dc=my,dc=organization,dc=domain"(引用符なし)と入力するだけです。
パスワード これは、上記で定義されたバインドユーザパスワードです。"hardtoguesspassword"(引用符なし)と入力します。

目次

ユーザルックアップ設定

フィールド名 記入する値
ユーザタイプ 選択:
  • Novell Edirectoryは、LDAPサーバーがNovellのeDdirectoryを起動している場合に使用します。
  • posixAccount (rfc2307) は、RFC-2307と互換性のあるLDAPサーバが稼働している場合に使用します(Mac OS Xサーバを含むOpenLDAPが稼働している場合に選択してください)。
  • posixAccount (rfc2307bis)は、RFC-2307bis対応のLDAPサーバーが稼働している場合に使用します。
  • sambaSamAccount (v.3.0.7) は、LDAPサーバがSAMBAの3.x LDAPスキーマ拡張で動作していて、それを使用したい場合に使用します。
  • LDAPサーバがマイクロソフト社の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拡張)ですが、sAMAccountName(Windows 2000以前のログオンアカウント名)を使用できます(NTLM SSOを使用する場合は使用する必要があります)。

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

注: 管理 > サイト管理 > セキュリティ > サイトポリシー でユーザ名に拡張文字を許可することを検討することをお勧めします。

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

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

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

: 最後のケースでは、その機能はインタラクティブログインで使用できます。

ldap_user_type 値のデフォルト値は次のとおりです。

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

ldapサーバの更新に問題があるというエラーが出る場合(変更内容をldapサーバに書き戻さないように指定している場合も含む)、ldapオブジェクトクラスを * に設定してみてください。この問題については、http://moodle.org/mod/forum/discuss.php?d=70566 を参照してください。

パスワードの強制変更

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

Moodleへの最初のログイン時にユーザにパスワードの変更を強制したい場合は、 Yes と設定してください。それ以外の場合は、これを no にします。変更を余儀なくされるパスワードは、LDAPサーバに保存されているものであることに注意してください。

ユーザが最初のログイン時にパスワードを変更しないようにするため、この設定を No にしてください

標準のパスワード変更ページを使用する
  • これを Yes に設定すると、ユーザがパスワードを変更したいときはいつでも、Moodleは独自の標準パスワード変更ページを使用します。
  • これを No に設定すると、Moodleは "パスワード変更URL" というフィールドで指定されたページを使用します(以下を参照)。

MoodleからLDAPパスワードを変更するにはLDAPS接続が必要になる場合があることに注意してください(これは実際にはMS-ADの要件です)。それに加えて、上記で指定されたバインドユーザは、他のユーザのパスワードを変更するために必要なパーミッションを持っている必要があります。

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

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

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

フィールド名 記入する値
有効期限
  • これを No に設定すると、Moodleはユーザのパスワードの有効期限が切れているかどうかをチェックしません。
  • これを LDAP に設定すると、MoodleはユーザのLDAPパスワードの有効期限が切れているかどうかをチェックし、パスワードの有効期限が切れる数日前に警告します。パスワードの有効期限が切れると、"パスワードの有効期限が切れました" というメッセージが表示され、ユーザがMoodleからパスワードを変更できる場合は、変更するオプションが提供されます。

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

したがって、Novell eDirectoryサーバやMS-ADを持っていない限り、ここでは No を選択します。

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

そのため、Novell eDirectoryサーバを使用していて、Graceloginのサポートを許可したい場合以外は、ここでは No を選択します。

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

したがって、これを入力する必要はありません。

ユーザ作成を有効にする

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

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

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

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

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

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

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

eDirectoryでは、グループのobjectClassは(デフォルトでは) posixGroup ではなく、groupOfNames であり、そのmember属性は memberUid ではなく、member であり、その値は問題のユーザの完全なDNです。 このフィールドを使用するようにMoodleのコードを変更することは可能ですが、より良い解決策は、作成者グループに posixGroup の新しい objectClass 属性を追加して、各作成者のCNを memberUid 属性に置くことです。

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

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

ユーザアカウントの同期

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

NTLM SSO

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

データマッピング

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

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

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

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

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

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

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

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

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

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

言語 preferredLanguage

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

説明 description

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

ウェブページ この設定はオプションです。
IDナンバー

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

機関

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

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

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

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

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

電話2 LDAPサーバ内のユーザの追加の電話番号を保持する属性の名前。これは、homePhonemobilepagerfricateTelephoneNumber またはその他の場合があります。

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

住所 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構成が正しくないと、ユーザが誤って削除される可能性があるためです!


各LDAPコンテナに1000人以上のユーザがいるにもかかわらず、スクリプトがすべてのユーザを正しく実行していない場合、MS ADのようないくつかのLDAPストアは、デフォルトでは一度に1000人のユーザを送信し、5.4以前のPHPバージョンではLDAP結果のページングサポートを実装していないためです。あなたがPHP 5.4以上にアップグレードした場合、Moodleはあなたのすべてのユーザを正しく取得します。PHP 5.4にアップグレードできない場合、 http://support.microsoft.com/kb/315071 の指示に従って、Active Directory MaxPageSize設定を、あなたの総ユーザ数 (現在および将来の両方) よりも大きい数に設定することで、解決できるかもしれません。これはフォレスト全体の設定です。

Active Directoryヘルプ

Active DirectoryはMicrosoftのディレクトリサービスです。これは、Windows 2000Server以降のバージョンのオペレーティングシステムに含まれています。以下の主題の詳細については、 ここにアクセスしてください

  • 警告: PHP LDAPモジュールが存在しないようです
  • LDAPモジュールはLDAPサーバに接続できません
  • コンテクストと作成者の正しいCNを取得する
  • 適切なユーザ属性を取得する
  • ldp.exeサーバツールのインストール
  • Active Directory構成の例
  • MS Active Directoryの子ドメインとグローバルカタログ
  • グローバルカタログの有効化
  • Moodle1.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 (Root AD Domain)

| - dc1.my.domain.ca (Domain Controller)
| - dc2.my.domain.ca (Domain Controller)
|
| - - students.my.domain.ca (Sub AD Domain)
| - - - dc1.students.my.domain.ca (Domain Controller)
| - - - dc2.students.my.domain.ca (Domain Controller)
|
| - - faculty.my.domain.ca (Sub AD Domain)
| - - - dc1.faculty.my.domain.ca (Domain Controller)
| - - - dc2.faculty.my.domain.ca (Domain Controller)

この例では、トップレベルドメイン(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/

このように構成しないと、次のようなエラーが発生することがわかりました。

 [Thu May 26 15:23:53 2011] [error] [client 192.168.xxx.xxx] PHP Warning:  ldap_search() [<a href='function.ldap-search'>function.ldap-search</a>]: Search: Partial results and referral received in /xxx/xxx/moodle20/lib/ldaplib.php on line 241, referer: http://moodle.my.domain.ca/moodle20/login/index.php
 [Thu May 26 15:23:53 2011] [error] [client 192.168.xxx.xxx] PHP Warning:  ldap_first_entry(): supplied argument is not a valid ldap result resource in /xxx/xxx/moodle20/lib/ldaplib.php on line 248, referer: 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 のようなコンテナに格納される可能性があります...。

次に、代替手段があります: yes が設定されている o=myorg レベルを確認します。

  • ldap_contextを ou=students,ou=dept1,o=myorg ; ou=students,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接続を受け入れていることを確認するには、次のコマンドを使用できます。

openssl s_client –connect <ldap server ip address>: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 server ip address>    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 server DNS name>:636

OpenLDAP の設定を編集します。RHEL6 の場合、この設定は /etc/openldap/ldap.conf にあります。

  1. Define location of a CA Cert
TLS_CACERT /etc/ssl/certs/my_server_certificate.pem
TLS_CACERTDIR /etc/ssl/certs

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

httpd -k restart

Windowsサーバ

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

PHP の OpenLDAP 拡張機能を使って、SSL サーバ証明書のチェックを無効にすることができます。そのためには、 'C:\OpenLDAP\sysconf\' というディレクトリを作成します。このディレクトリに、以下の内容の ldap.conf というファイルを作成します。

TLS_REQCERT never

(PHP 5.3.xの特定のバージョンを使用している場合は、ファイルを他の場所に配置する必要がある場合がありますPHPバグ#48866を参照)

これで、LDAPサーバに接続するときに ldaps:// を使用できるようになります。

付録

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

コマンドラインを使用して、バインドユーザDNの操作属性を設定できます。 ldapmodifyを使用して、次の属性を追加するだけです。

属性名 説明
nsLookThroughLimit 検索操作のために検査されるエントリの数を指定します。この属性に値-1を指定すると、制限がないことを示します。
nsSizeLimit 検索操作に回答してサーバがクライアントアプリケーションに返すエントリの最大数を指定します。この属性に値-1を指定すると、制限がないことを示します。
nsTimeLimit サーバが検索操作の処理に費やす最大時間を指定します。この属性に値-1を指定すると、時間制限がないことを示します。
nsIdleTimeout 接続が切断される前に、サーバへの接続がアイドル状態になる時間を指定します。値は秒単位で示されます。この属性に値-1を指定すると、制限がないことを示します。
 LDAP Console Command-Line

 ldapmodify -h redhat_dir_server -p 389 -D "cn=directory manager" -w secretpwd

 dn: uid=MoodleAdmin,ou=system,dc=myschool,dc=edu
 changetype: modify
 add:nsSizeLimit
 nsSizeLimit: 1000
 


質問はありますか?

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

関連項目

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