「LDAP認証」の版間の差分

提供:MoodleDocs
移動先:案内検索
 
(2人の利用者による、間の170版が非表示)
1行目: 1行目:
作成中です - [[利用者:Mitsuhiro Yoshida|Mitsuhiro Yoshida]] 2006年10月7日 (土) 22:41 (CDT)
{{認証}}
このドキュメントでは、MoodleでLightweight Directory Access Protocol(LDAP)認証を設定する方法について説明します。ユーザがMoodleでLDAPをインストールおよび管理するのを支援するために、基本、高度、およびいくつかのトラブルシューティングのセクションをカバーしています。
 
==基本シナリオ==
ほとんどのインストールに対応した、シンプルでわかりやすいアプローチです。
 
===前提条件===
Moodleは、異なるディレクトリ構造、特別な構成設定などを持ついくつかのタイプのLDAPサーバをサポートします。同じLDAPサーバタイプ(MS Active Directoryなど)を使用している場合でも、各サイトは完全に異なるディレクトリ構造を使用してユーザアカウントを保持できます。以下のセクションで設定例を示すために、ここでは、以下の特徴を持つ '''仮想''' のMoodleサイトおよびLDAPサーバを想定しています。MoodleサイトおよびLDAPサーバを想定しています。


このドキュメントは、MoodleのLDAP認証をセットアップする方法に関して記述したものです。[[#基本シナリオ|基本シナリオ]]では、すべてをシンプルかつ単刀直入に説明していますので、ほとんどのインストールの場合、十分な内容になっています。あなたのインストールが若干大規模で、複数のLDAPサーバまたはユーザのためにLDAPツリーで複数のロケーション ( コンテクスト ) を使用している場合、[[#高度なシナリオ|高度なシナリオ]]をご覧ください。


==基本シナリオ==
'''重要な注意''' : 必ず確認してください '''''あなた'''''(そのディレクトリ構造を含め、)MoodleサイトとLDAPサーバの詳細と、独自の設定を反映するために、設定を調整します。
 
#あなたのMoodleサイトは '''http://your.moodle.site/''' にあります。
#LDAP拡張機能を使用してPHPインストールを構成しました。ロードされてアクティブ化され、'''http://your.moodle.site/admin/phpinfo.php'''(ユーザ 'admin' としてログイン)に移動すると表示されます。
#LDAPサーバのIPアドレスは '''192.168.1.100''' です。
#設定でSSL付きのLDAP(LDAPSとも呼ばれます)を使用していません。これにより、特定の操作が機能しなくなる可能性があります(たとえば、MS Active Directoryを使用している場合はデータを更新できません -- 以降 MS-AD --)が、ユーザを認証するだけの場合は問題ありません。
#ユーザがMoodleに初めてログインするときにパスワードを変更したくない。
#MS-ADを使用している場合は、認証データのソースとして単一のドメインを使用しています(これについては付録を参照してください)。
#LDAPツリーのルートとして、トップレベルの識別名(DN)である '''dc=my,dc=organization,dc=domain''' を使用しています。
#LDAPサーバーへのバインドに使用する非特権のLDAPユーザアカウントがあります。特定のLDAPサーバでは必要ありませんが、MS-ADでは必要なので、LDAPサーバが必要としていなくても使っておいて損はありません。このアカウントとそのパスワードに有効期限がないことを確認し、できるだけ強力なパスワードを設定してください。このパスワードは、Moodleを設定する際、一度だけ入力する必要がありますので、できるだけ推測しにくいものにしてください。例えば、このユーザアカウントのDNが '''cn=ldap-user,dc=my,dc=organization,dc=domain''' で、パスワードが '''hardtoguesspassword''' だとします。
#すべてのMoodleユーザは、LDAPルートのすぐ下にある '''moodleusers''' と呼ばれる組織単位(OU)にいます。そのOUのDNは '''ou=moodleusers,dc=my,dc=organization,dc=domain''' です。
#あなたのLDAPユーザのパスワードがMoodleに保存されることはありません。
 
=== LDAP認証の有効化===


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


# あなたのMoodleサイトは、'''http://your.moodle.site/''' にあります。
# ''サイト管理 > プラグイン > 認証 > 認証管理'' に移動し、LDAPサーバの反対側にある目のアイコンをクリックします。有効にすると、グレー表示されなくなります。
# あなたのPHPにはLDAPエクステンションが含まれています。LDAPエクステンションは有効かつロードされ、 ユーザ'admin'でログインした場合、 ''http://your.moodle.site/admin/phpinfo.php''' に表示されます。
#設定リンクをクリックし、必要に応じて構成し(以下の情報を参照)、'変更を保存する' ボタンをクリックします。
# あなたのLDAPサーバのIPアドレスは、'''192.168.1.100''' です。
# あなたは、SSLで保護されたLDAP ( LDAPS ) を使用していません。この場合、特定のオペレーション ( 例 MS Active Directoryを使用してデータを更新できません  -- 以後MS-AD -- ) は動作しませんが、ユーザ認証だけでしたらOKです。
# あなたは、ユーザの最初のログイン時にパスワードを変更させたくありません。
# You are using a single domain as the source of your authentication data in case you are using MS-AD (more on this in the Appendices).
# You are using a top level distinguished name (DN) of '''dc=my,dc=organization,dc=domain''' as the root of your LDAP tree.
# You have a non-privileged LDAP user account you will use to bind to the LDAP server. This is not necessary with certain LDAP servers, but MS-AD requires this and it won't hurt if you use it even if your LDAP server doesn't need it. Make sure '''this account and its password don't expire''', and make this password as strong as possible. Remember you only need to type this password once, when configuring Moodle, so don't be afraid of making it as hard to guess as possible. Let's say this user account has a DN of '''cn=ldap-user,dc=my,dc=organization,dc=domain''', and password '''hardtoguesspassword'''.
# All of your Moodle users are in an organizational unit (OU) called '''moodleusers''', which is right under your LDAP root. That OU has a DN of '''ou=moodleusers,dc=my,dc=organization,dc=domain'''.
# You '''don't''' want your LDAP users' passwords to be stored in Moodle at all.


===Moodle認証の設定===
[[Image:LDAPserversettings.png|center]]


Log in as an admin user and go to Administration >> Users >> Authentication. In the drop down listbox titled  "Choose an authentication method" select "Use an LDAP Server". You will get a page similar to this one:
あとは、値を埋めていくだけです。順を追って見ていきましょう。


<br>
==== LDAPサーバ設定====
::: [[Image:auth_ldap_config_screenshot.jpg]]
{| border = "1" cellspacing = "0" cellpadding = "5"
<br>
!フィールド名
!記入する値
|-
|ホストURL
|LDAPサーバのIPは192.168.1.100なので、"'''ldap://192.168.1.100'''" と入力してください(引用符なし)。または、"'''192.168.1.100''" と入力してください(特にMS Windowsサーバでは、最初の構文では接続できない人がいます)。
|-
|バージョン
|本当に古いLDAPサーバを使用しているのでない限り、 '''バージョン3''' を選択する必要があります。
|-
| LDAPエンコーディング
| LDAPサーバで使用されるエンコーディングを指定します。おそらくutf-8です。
|}


Now, you just have to fill in the values. Let's go step by step.
[[LDAP認証#目次|目次]]
<br>
<br>


====バインド設定====
{| border="1" cellspacing="0" cellpadding="5"
{| border="1" cellspacing="0" cellpadding="5"
! Field name
!フィールド名
! Value to fill in
!記入する値
|-
|-
| ldap_host_url
|パスワードをキャッシュしないでください
| As the IP of your LDAP server is 192.168.1.100, type "'''ldap://192.168.1.100'''" (without the quotes).
| あなたはユーザのパスワードをMoodleのデータベースに保存 '''したくない''' ので、ここでは '''Yes''' を選択してください。
|-
|-
| ldap_version
|識別名
| Unless you are using a really old LDAP server, '''version 3''' is the one you should choose.
|これは、上記で定義されたバインドユーザの識別名です。"'''cn=ldap-user,dc=my,dc=organization,dc=domain'''"(引用符なし)と入力するだけです。
|-
|-
| ldap_preventpassindb
|パスワード
| As you '''don't''' want to store the users's password in Moodle's database, choose '''Yes''' here.
|これは、上記で定義されたバインドユーザパスワードです。"'''hardtoguesspassword'''"(引用符なし)と入力します。
|}
 
[[LDAP認証#目次|目次]]
 
====ユーザルックアップ設定====
{| border="1" cellspacing="0" cellpadding="5"
!フィールド名
!記入する値
|-
|-
| ldap_bind_dn
|ユーザタイプ
| This is the distinguished name of the bind user defined above. Just type "'''cn=ldap-user,dc=my,dc=organization,dc=domain'''" (without the quotes).
|選択:
*'''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''' となります。
|-
|-
| ldap_bind_pw
|コンテクスト
| This is the bind user password defined above. Type "'''hardtoguesspassword'''" (without the quotes).
|あなたのMoodleユーザが配置されているコンテクスト (コンテナ) のDNです。ここでは、'''ou=moodleusers,dc=my,dc=organization,dc=domain''' と入力してください。
 
Mac OS X Serverでは、これは通常''' cn = users、dc = my、dc = organization、dc = domain '''です。
|-
|-
| ldap_user_type
|サブコンテクストを検索する
| Choose:
|あなたが、'''ou=moodleusers,dc=my,dc=organization,dc=domain'' からぶら下がっているサブ組織単位 (サブコンテクスト) を持っていて、Moodleにそこも検索させたい場合、これを '''yes''' に設定してください。それ以外の場合は、'''no''' に設定してください。
* '''Novel Edirectory''' if your LDAP server is running Novell's eDdirectory.
* '''posixAccount (rfc2307)''' if your LDAP server is running a RFC-2307 compatible LDAP server (choose this is your server is running OpenLDAP).
* '''posixAccount (rfc2307bis)''' if your LDAP server is running a RFC-2307bis compatible LDAP server.
* '''sambaSamAccount (v.3.0.7)''' if your LDAP server is running with SAMBA's 3.x LDAP schema extension and you want to use it.
* '''MS ActiveDirectory''' if your LDAP server is running Microsoft's Active Directory (MS-AD)
|-
|-
| ldap_contexts
|エイリアスの逆参照
| The DN of the context (container) where all of your Moodle users are found. Type '''ou=moodleusers,dc=my,dc=organization,dc=domain''' here.
| 時々、あなたのLDAPサーバは、あなたが検索している本当の値が、実際にはLDAPツリーの別の場所にあることを教えてくれるでしょう (これはエイリアスと呼ばれます)。Moodleにエイリアスを '逆参照' させ、元の場所から本当の値を取得させたい場合、この設定を '''yes''' にしてください。Moodleにエイリアスを逆参照させたくない場合、'''no''' に設定してください。MS-ADを使用している場合、これを '''no''' に設定してください。
|-
|-
| ldap_search_sub
|ユーザ属性
| If you have any sub organizational units (subcontexts) hanging from '''ou=moodleusers,dc=my,dc=organization,dc=domain''' and you want Moodle to search there too, set this to '''yes'''. Otherwise, set this to '''no'''.
| LDAPツリーでユーザーの名前や検索に使われる属性です。このオプションは、上記で選択した ''ユーザタイプ'' の値に基づいたデフォルト値を取ります。<u>だから、特別なことが必要でなければ、ここに記入する必要はありません</u>。
 
ちなみに、通常は '''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 でのログインはとにかく機能しません。
 
注: ''管理 > サイト管理 > セキュリティ > [[サイトポリシー]]'' でユーザ名に拡張文字を許可することを検討することをお勧めします。
|-
|-
| ldap_opt_deref
|メンバー属性
| Sometimes your LDAP server will tell you that the real value you are searching for is in fact in another part of the LDAP tree (this is called an alias). If you want Moodle to 'dereference' the alias and fetch the real value from the original location, set this to '''yes'''. If you don't want Moodle to dereference it, set this to '''no'''. If you are using MS-AD, set this to '''no'''.
|特定のグループのメンバを一覧表示するために使用される属性。このオプションは、上記で選択した ''ユーザタイプ'' 値に基づいたデフォルト値を取ります。<u>したがって、特別なものが必要でない限り、これを入力する必要はありません。</u>
 
ちなみに、通常の値は '''member''' '''memberUid''' です。
|-
|-
| ldap_user_attribute
|メンバー属性はdnを使用します
| The attribute used to name/search users in your LDAP tree. This option takes a default value based on the ''ldap_user_type'' value you choosed above. <u>So unless you need something special, you don't need to fill this in</u>.
|メンバー属性に識別名が含まれているか(1)、含まれていないか(0)。このオプションは、上記で選択した ''ユーザタイプ'' 値に基づいてデフォルト値を取ります。<u>したがって、特別なものが必要でない限り、これを入力する必要はありません。</u>
|-
|オブジェクトクラス
|ユーザの検索に使用されるLDAPオブジェクトのタイプ。このオプションは、上記で選択した ''ユーザタイプ'' 値に基づいたデフォルト値を取ります。<u>したがって、特別なものが必要でない限り、これを入力する必要はありません。</u>
*空白にした場合は、上記で選択した ''ユーザタイプ'' に基づくデフォルト値が使用されます(以下参照)。
*"objectClass=some-string" を指定すると、フィルタとして "(objectClass=some-string)" が提供されます。
*"("で始まらない値を提供した場合、それは "objectClass" に設定されるべき値であると仮定されます。つまり、"some-string" を指定すると、フィルタとして "(objectClass=some-string)" が指定されます。
*もし、あなたが "(" で始まる文字列を提供した場合、それはそのまま渡されます。もし、あなたが "(&(objectClass=user)(enabledMoodleUser=1))" を指定した場合、フィルタとしてそれを通過させます。


By the way, it's usually '''cn''' (Novell eDirectory and MS-AD) or '''uid''' (RFC-2037, RFC-2037bis and SAMBA 3.x LDAP extension), but if you are using MS-AD you could use '''sAMAccountName''' (the pre-Windows 2000 logon account name) if you need too.
'''''': 最後のケースでは、その機能はインタラクティブログインで使用できます。
 
''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 を参照してください。
|}
 
====パスワードの強制変更====
{| border="1" cellspacing="0" cellpadding="5"
!フィールド名
!記入する値
|-
|-
| ldap_memberattribute
|パスワードの強制変更
| The attribute used to list the members of a given group. This option takes a default value based on the ''ldap_user_type'' value you choosed above. <u>So unless you need something special, you don't need to fill this in.</u>
| '''注: この設定は、LDAP同期ユーザタスクを使用してユーザを作成する場合にのみ使用されます。ユーザがmoodleへの最初のログインの一部として作成された場合は使用されません''' 。
 
Moodleへの最初のログイン時にユーザにパスワードの変更を強制したい場合は、 ''Yes'' と設定してください。それ以外の場合は、これを ''no'' にします。変更を余儀なくされるパスワードは、LDAPサーバに保存されているものであることに注意してください。


By the way, the usual values are '''member''' and '''memberUid'''.
<u>ユーザが最初のログイン時にパスワードを変更しないようにするため、この設定を ''No'' にしてください</u>。
|-
|-
| ldap_objectclass
|標準のパスワード変更ページを使用する
| The type of LDAP object used to search for users. This option takes a default value based on the ''ldap_user_type'' value you choosed above. <u>So unless you need something special, you don't need to fill this in.</u>
|
*これを ''Yes'' に設定すると、ユーザがパスワードを変更したいときはいつでも、Moodleは独自の標準パスワード変更ページを使用します。
*これを ''No'' に設定すると、Moodleは "パスワード変更URL" というフィールドで指定されたページを使用します(以下を参照)。


Here are the default values for each of the ''ldap_user_type'' values:
MoodleからLDAPパスワードを変更するにはLDAPS接続が必要になる場合があることに注意してください(これは実際にはMS-ADの要件です)。それに加えて、上記で指定されたバインドユーザは、他のユーザのパスワードを変更するために必要なパーミッションを持っている必要があります。
* '''User''' for Novel eDirectory
 
* '''posixAccount''' for RFC-2037 and RFC-2037bis
また、Novell eDirectoryとActive Directory以外のMoodleからパスワードを変更するためのコードはほとんどテストされていないため、これは他のLDAPサーバでは機能する場合と機能しない場合があります。
* '''sambaSamAccount''' for SAMBA 3.0.x LDAP extension
* '''user''' for MS-AD
|-
|-
| Force change password
|パスワードのフォーマット
| Set this to ''Yes'' if you want to force your users to change their password on the first login into Moodle. Otherwise, set this to ''no''. Bear in mind the password they are forced to change is the one stored in your LDAP server.
| LDAPサーバに送信する前に、新しいパスワードを暗号化する方法を指定します: プレーンテキスト、MD5ハッシュ、またはSHA-1ハッシュ。たとえば、MS-ADはプレーンテキストを使用します。
|-
|パスワード変更URL
|ここでは、ユーザがユーザ名/パスワードを忘れた場合に回復または変更できる場所を指定できます。これは、ログインページとユーザページのボタンとしてユーザに提供されます。これを空白のままにすると、ボタンは印刷されません。
|}


<u>As you don't want your users to change their passwords in their first login, leave this set to ''No''</u>
==== LDAPパスワードの有効期限設定====
{| border="1" cellspacing="0" cellpadding="5"
!フィールド名
!記入する値
|-
|-
| Use standard Change Password Page
|有効期限
|
|
* Setting this to ''Yes'' makes Moodle use it's own standard password change page, everytime users want to change their passwords.
*これを ''No'' に設定すると、Moodleはユーザのパスワードの有効期限が切れているかどうかをチェックしません。
* Setting this to ''No'' makes Moodle use the the page specified in the field called "Change password URL" (at the bottom of the configuration page).
*これを ''LDAP'' に設定すると、MoodleはユーザのLDAPパスワードの有効期限が切れているかどうかをチェックし、パスワードの有効期限が切れる数日前に警告します。パスワードの有効期限が切れると、"パスワードの有効期限が切れました" というメッセージが表示され、ユーザがMoodleからパスワードを変更できる場合は、変更するオプションが提供されます。


Bear in mind that changing your LDAP passwords from Moodle might require a LDAPS connection (this is true at least for MS-AD).
現在のコードは、Novell eDirectory LDAPサーバとMS-ADのみを扱います。


Also, code for changing passwords from Moodle for anything but Novell eDirectory is almost not tested, so this may or may not work for other LDAP servers.
<u>したがって、Novell eDirectoryサーバやMS-ADを持っていない限り、ここでは ''No'' を選択します。</u>
|-
|-
| ldap_expiration
|有効期限の警告
|  
|この値は、パスワードの有効期限が切れる何日前に、パスワードの有効期限が近づいていることをユーザに警告するかを設定します。
* Setting this to ''No'' will make Moodle not to check if the password of the user has expired or not.
|-
* Setting this to ''LDAP'' will make Moodle check if the LDAP password of the user has expired or not, and warn her a number of days before the password expires.
|有効期限属性
|パスワードの有効期限を確認するために使用されるLDAPユーザ属性。このオプションは、上記で選択した ''ユーザタイプ'' 値に基づいたデフォルト値を取ります。<u>したがって、特別なものが必要でない限り、これを入力する必要はありません。</u>
|-
|グレースログイン
|この設定は、Novell eDirectoryに固有です。 ''Yes'' に設定されている場合は、LDAPグレースログインサポートを有効にします。パスワードの有効期限が切れると、ユーザはグレースログインカウントが0になるまでログインできます。


Current code only deals with Novell eDirectory LDAP server, but there is a patch floating around to make it work with MS-AD too (search in the authentication forum).
<u>そのため、Novell eDirectoryサーバを使用していて、Graceloginのサポートを許可したい場合以外は、ここでは ''No'' を選択します。</u>
|-
|グレースログイン属性
|この設定は現在、コードでは使用されていません(Novell eDirectoryに固有です)。


<u>So unless you have Novell eDirectory server (or use the patch), choose ''No'' here.</u>
<u>したがって、これを入力する必要はありません。</u>
|}
 
====ユーザ作成を有効にする====
{| border="1" cellspacing="0" cellpadding="5"
!フィールド名
!記入する値
|-
|-
| ldap_expiration_warning
|外部でユーザを作成する
| This value sets how many days in advance of password expiration the user is warned that her password is about to expire.
|新規(匿名)ユーザは、外部LDAPサーバ上にユーザアカウントを自己作成し、電子メールで確認できます。 これを有効にする場合は、ユーザ作成時にモジュール固有のオプションを設定し、''サイト管理 > プラグイン > 認証 > 認証管理'' の ''auth_instructions'' フィールドにいくつかの指示を記入することも忘れないでください。そうしないと、新しいユーザは新しいアカウントを自分で作成することができません。
 
Novell eDirectoryおよびMS-ADは、外部でユーザを作成できます。 RFC-2307準拠のサーバでユーザを作成することもできます。
|-
|-
| ldap_exprireattr
|新規ユーザのコンテクスト
| The LDAP user attribute used to check password expiration. This option takes a default value based on the ''ldap_user_type'' value you choosed above. <u>So unless you need something special, you don't need to fill this in.</u>
|ユーザが作成されるコンテクストを指定します。このコンテクストは、セキュリティの問題を防ぐために、他のユーザのコンテクストとは異なる必要があります。
|}
 
====システムロールを割り当てる====
{| border="1" cellspacing="0" cellpadding="5"
!フィールド名
!記入する値
|-
|-
| ldap_gracelogins
|システムロールマッピング
| This setting is specific to Novell eDirectory. If set to ''Yes'', enable LDAP gracelogin support. After password has expired the user can login until gracelogin count is 0.
|このセクションでは、システムコンテクストで割り当てることができるすべてのロールを一覧表示します。デフォルトでは、これは "マネージャコンテクスト" と "コース作成者コンテクスト" になりますが、[[カスタムロールの作成|ロール定義]]でカスタマイズできます。
 
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''' 属性に置くことです。


<u>So unless you have Novell eDirectory server and want to allow gracelogin support, choose ''No'' here.</u>
MS Active Directoryでは、作成者が参加するセキュリティグループを作成してから、それらすべてを追加する必要があります。上記のLDAPコンテクストが  'ou=staff,dc=my,dc=org' の場合、グループは 'cn=creators,ou=staff,dc=my,dc=org' になります。一部のユーザが他のコンテクストから来ており、同じセキュリティグループに追加されている場合は、同じ形式を使用する最初のコンテクストの後に、これらを個別のコンテクストとして追加する必要があります。
 
このセクションは、Moodle3.3にある "コース作成者" セクションに代わるものです。アップグレードプロセスでは、指定されたDNを新しいアプローチに移行する必要があります。
 
|}
 
====ユーザアカウントの同期====
{| border="1" cellspacing="0" cellpadding="5"
!フィールド名
!記入する値
|-
|-
| ldap_graceattr
|外部ユーザの削除
| This setting is currently not used in the code (and is specific to Novell eDirectory).
|ユーザが外部ソースから削除されたときに、一括同期中に内部ユーザアカウントをどのように処理するかを指定します。一時停止されたユーザのみが、ext sourceに再表示された場合、自動的に復活します。
|}


<u>So you don't need to fill this in.</u>
==== NTLM SSO ====
{| border="1" cellspacing="0" cellpadding="5"
!フィールド名
!記入する値
|-
|有効にする
| NTLM SSOを使用する場合([[NTLM認証]]で詳細を参照)、ここで ''Yes'' それ以外の場合は、 ''No'' を選択します。
|-
|-
| ldap_create_context
|サブネット
|
| NTLM SSOを使用するクライアントのサブネットを指定します(詳細については、[[NTLM認証]]を参照してください)。
|-
|-
| ldap_creators
| MS IE Fast Path?
| The DN of the group that contains all of your Moodle creators. This is typically a posixGroup with a "memberUid" attribute for each user you want to be a creator.  If your group is called ''creators'', type '''cn=creators,ou=moodleusers,dc=my,dc=organization,dc=domain''' here.  Each memberUid attribute contains the CN of a user who is authorized to be a creator.  Do not use the user's full DN (e.g.,  not '''memberUid: cn=JoeTeacher,ou=moodleusers,dc-my,dc=organizations,dc=domain''', but rather '''memberUid: JoeTeacher''').
|すべてのクライアント(またはほとんどのクライアント)がMS Internet Explorerを使用している場合は、このオプションを設定して、SSOログインの特定の手順をバイパスし、ログイン時間を短縮できます。これはMS Internet Explorerでのみ機能しますが、他のブラウザを適切な方法で処理します(それらは自動的にプレーンログインページに送信されます)。
|}


In eDirectory, the objectClass for a group is (by default) not '''posixGroup''' but '''groupOfNames,''' whose member attribute is '''member,''' not '''memberUid,''' and whose value is the full DN of the user in question.  Although you can probably modify Moodle's code to use this field, a better solution is just to add a new '''objectClass''' attribute of '''posixGroup''' to your creators group and put the CNs for each creator in a '''memberUid''' attribute.
====データマッピング====
{| border="1" cellspacing="0" cellpadding="5"
!フィールド名
!記入する値
|-
|ファーストネーム
| LDAPサーバでユーザの名を保持する属性の名前。これは通常、 '''givenName''' または '''displayName''' です。


In MS Active Directory, you will need to create a security group for your creators to be part of and then add them all. If your ldap context above is 'ou=staff,dc=my,dc=org' then your group should then be 'cn=creators,ou=staff,dc=my,dc=org'. If some of the users are from other contexts and have been added to the same security group, you'll have to add these as separate contexts after the first one using the same format.
<u>この設定はオプションです。</u>
|-
|-
| First name
|
| The name of the attribute that holds the first name of your users in your LDAP server. This is usually '''givenName'''.
| LDAPサーバでユーザの名前を保持する属性の名前。これは通常 '''sn''' です。


<u>この設定は任意です。</u>
<u>この設定はオプションです。</u>
|-
|-
| Surname
|電子メールアドレス
| The name of the attribute that holds the surname of your users in your LDAP server. This is usually '''sn'''.
| LDAPサーバでユーザの電子メールアドレスを保持する属性の名前。これは通常 '''mail''' です。


<u>この設定は任意です。</u>
<u>この設定はオプションです。</u>
|-
|-
| Email address
|市/町
| The name of the attribute that holds the email address of your users in your LDAP server. This is usually '''mail'''.
| LDAPサーバでユーザの市/町を保持する属性の名前。これは通常、 '''l''' (小文字のL) または '''localityName''' (MS-ADでは無効) です。


<u>この設定は任意です。</u>
<u>この設定はオプションです。</u>
|-
|-
| Phone 1
|
| The name of the attribute that holds the telephone number of your users in your LDAP server. This is usually '''telephoneNumber'''.
| LDAPサーバでユーザの国を保持する属性の名前。これは通常、 '''c''' または '''countryName''' です (MS-ADでは無効です)。


<u>この設定は任意です。</u>
<u>この設定はオプションです。</u>
|-
|-
| Phone 2
|言語
| The name of the attribute that holds an additional telephone number of your users in your LDAP server. This can be '''homePhone''', '''mobile''', '''pager''', '''facsimileTelephoneNumber''' or even others.
| '''preferredLanguage'''


<u>この設定は任意です。</u>
<u>この設定はオプションです。</u>
|-
|-
| Department
|説明
| The name of the attribute that holds the department name of your users in your LDAP server. This is usully '''departmentNumber''' (for posixAccount and maybe eDirectory) or '''department''' (for MS-AD).
| '''description'''


<u>この設定は任意です。</u>
<u>この設定はオプションです。</u>
|-
|-
| Address
|ウェブページ
| The name of the attribute that holds the street address of your users in your LDAP server. This is usully '''streetAddress''' or '''street'.
|<u>この設定はオプションです。</u>
|-
| IDナンバー
|


<u>この設定は任意です。</u>
<u>この設定はオプションです。</u>
|-
|-
| City/town
|機関
| The name of the attribute that holds the city/town of your users in your LDAP server. This is usully '''l''' (lowercase L) or '''localityName''' (not valid in MS-AD).
|


<u>この設定は任意です。</u>  
<u>この設定はオプションです。</u>
|-
|-
| Country
|部門
| The name of the attribute that holds the couuntry of your users in your LDAP server. This is usully '''c''' or '''countryName''' (not valid in MS-AD).
| LDAPサーバ内のユーザの部門名を保持する属性の名前。これは通常、'''departmentNumber''' (posixAccountおよびおそらくeDirectoryの場合) または '''department''' (MS-ADの場合) です。


<u>この設定は任意です。</u>
<u>この設定はオプションです。</u>
|-
|-
| Description
|電話1
| '''description'''
| LDAPサーバ内のユーザの電話番号を保持する属性の名前。これは通常 '''telephoneNumber''' です。


<u>この設定は任意です。</u>
<u>この設定はオプションです。</u>
|-
|-
| ID Number
|電話2
|  
| LDAPサーバ内のユーザの追加の電話番号を保持する属性の名前。これは、'''homePhone'''、'''mobile'''、'''pager'''、'''fricateTelephoneNumber''' またはその他の場合があります。


<u>この設定は任意です。</u>
<u>この設定はオプションです。</u>
|-
|-
| Language
|住所
| '''preferredLanguage'''
| LDAPサーバ内のユーザの番地を保持する属性の名前。これは通常、'''streetAddress''' または '''street''' です。


<u>この設定は任意です。</u>
<u>この設定はオプションです。</u>
|-
| Instructions
|
|}
|}


The rest of the fields are common to all authentication methods and will not be discussed here.
=====カスタムユーザプロファイルフィールド=====


==高度なシナリオ==
''サイト管理 > ユーザ > アカウント > ユーザプロファイルフィールド'' で作成されたユーザプロファイルフィールドは、データマッピングフィールドリストの最後に、'''アドレス''' フィールドの後に自動的に表示されるようになりました。例を参照してください。
[[File:ldapcustomuserprofilefields.jpg]]


===複数のLDAPサーバを使用する===
== LDAPユーザの同期ジョブを有効にする==
Entering more than one name in the ldap_host_url field can provide some sort of resilience to your system. Simply use the syntax :
ldap://my.first.server ; ldap://my.second.server ; ...


Of course, this will only work if all the servers share the same directory information, using a replication or synchronization mecanism once introduced in eDirectory and now generalized to the main LDAP-compatible directories.
LDAPユーザ同期ジョブ( ''\auth_ldap\task\sync_task'' )[[スケジュールタスク|スケジュールされたタスク]] (Moodle 3.0で新しくなりました。以前はCLIスクリプトがありました。詳細はMDL-51824をご覧ください) は、ユーザ情報の作成および更新、LDAPアカウントの一時停止および削除を行います。


There is one drawback in Moodle 1.5 - 1.6 implementation of LDAP authentication : the auth_ldap_connect() function processes the servers sequentially, not in a round robin mode. Thus, if the primary server fails, you will have to wait for the connection to time out before switching to the following one.
LDAPサーバ認証を有効にした後、管理者はLDAPユーザ同期ジョブを次のように有効にして構成する必要があります。


===LDAPツリーで複数のユーザロケーション ( コンテクスト ) を使用する===
# ''サイト管理 > サーバ > スケジュールされたタスク'' に移動し、LDAPユーザの同期ジョブの反対側にある歯車のアイコンをクリックします。
There is no need to use multiple user locations if your directory tree is flat, i.e. if all user accounts reside in a '''ou=people,dc=my,dc=organization,dc=domain''' or '''ou=people,o=myorg''' container.
#実行の希望の頻度を選択し、無効なチェックボックスのチェックを外してタスクを有効にします。
{{Warning| LDAPユーザの同期ジョブを有効にする(データベースとmoodledataフォルダをバックアップする)前に、すべてのLDAP設定が正しく機能していることを確認することが重要です。LDAP構成が正しくないと、ユーザが誤って削除される可能性があるためです!}}


At the opposite, if you use the ACL mecanism to delegate user management, there are chances that your users will be stored in containers like '''ou=students,ou=dept1,o=myorg''' and '''ou=students,ou=dept2,o=myorg''' ...
各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設定を、あなたの総ユーザ数 (現在および将来の両方) よりも大きい数に設定することで、解決できるかもしれません。これはフォレスト全体の設定です。


Then there is an alternative :
== Active Directoryヘルプ==
* Look at the '''o=myorg''' level with the ldap_search_sub attribute set to '''yes'''.
[[Active Directory]]はMicrosoftのディレクトリサービスです。これは、Windows 2000Server以降のバージョンのオペレーティングシステムに含まれています。以下の主題の詳細については、 '''[[Active Directory |ここにアクセスしてください]]'''
* Set the ldap_context to '''ou=students,ou=dept1,o=myorg ; ou=students,ou=dept2,o=myorg'''.


Choosing between these two solutions supposes some sort of benchmarking, as the result depends heavily on the structure of your directory tree '''and''' on your LDAP software indexing capabilities. Simply note that there is a probability in such deep trees that two users share the same ''common name'' (cn), while having different ''distinguished names''. Then only the second solution will have a deterministic result (returning allways the same user).
*警告: PHP LDAPモジュールが存在しないようです
* LDAPモジュールはLDAPサーバに接続できません
*コンテクストと作成者の正しいCNを取得する
*適切なユーザ属性を取得する
* ldp.exeサーバツールのインストール
* Active Directory構成の例
* MS Active Directoryの子ドメインとグローバルカタログ
*グローバルカタログの有効化
* Moodle1.8を使用したActive Directory
* MS Active Directory + SSL


===LDAPS ( LDAP + SSL ) を使用する===
==高度なシナリオ - 複数のサーバまたはローケーション==
====MS Active Directory + SSL ====
複数のLDAPサーバ、またはLDAPツリー内の複数の場所(コンテクスト)を使用する大規模なインストールの場合。


If the Certificate Authority is not installed you'll have to install it first as follows:
=== LDAPディレクトリ接続を回復力のあるものにする===
# Click '''Start''' -> '''Control Panel''' -> '''Add or Remove programs.'''
* ldap_host_urlフィールドに複数の名前を入力すると、システムに何らかの回復力を提供できます。構文を使用するだけです。
# Click '''Add/Remove Windows Components''' and select '''Certificate Services.'''
# Follow the procedure provided to install the '''Certificate Authority'''. Enterprise level is a good choice.


Verify that SSL has been enabled on the server by installing suptools.msi from Windows installation cd's \Support\tools directory. After support tools installation:
ldap://my.first.server; ldap://my.second.server; ...
# Select '''Start''' -> '''Run''', write '''ldp''' in the Open field.
# From the ldp window select '''Connection''' -> '''Connect''' and supply valid hostname and port number '''636'''. Also select the SSL check box.


If successful, you should get information about the connection.
もちろん、これはすべてのサーバが同じディレクトリ情報を共有している場合にのみ機能します。eDirectoryを使用している場合は、サーバが関連するすべてのツリーパーティションの実行可能性を持っていることを確認する必要がありますし、Active Directoryを使用している場合は、レプリケーションによって必要な同じ情報をサーバが保持している必要があります。


Next step is to tell PHP's OpenLDAP extension to disable SSL certificate checking. On Windows servers you're most likely using pre-compiled PHP version, where you must create a path ''C:\OpenLDAP\sysconf''. In this path create a file called "ldap.conf" with content:
LDAP認証のMoodle 1.5 - 1.6実装には1つの欠点があります。auth_ldap_connect()関数は、ラウンドロビンモードではなく、サーバを順番に処理します。したがって、プライマリサーバに障害が発生した場合は、接続がタイムアウトするのを待ってから、次のサーバに切り替える必要があります。


TLS_REQCERT never.
参照: [http://moodle.org/mod/forum/discuss.php?d=17198 複数のLDAPサーバの使用 - 学生は別々のドメインにいます]フォーラムディスカッション


Now you should be able to use '''ldaps://''' when connecting to MS-AD.
===マルチドメイン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=myorg''' や '''ou=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を有効にする====
 
* [[Active_Directory#MS_Active_Directory_.2B_SSL | MS Active Directoryでの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''' にあります。
# 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'' というファイルを作成します。


===Child Domains and the Global Catalog in MS Active Directory===
TLS_REQCERT never


Moodle currently only has limited support for multiple domain controllers; specifically it expects each of the LDAP servers listed to contain identical sets of information. If you have users in multiple domains this presents an issue. One solution when working with MS-AD is to use the Global Catalog. The Global Catalog is designed to be a read-only, partial representation of an entire MS-AD forest, designed for searching the entire directory when the domain of the required object is not known.
''(PHP 5.3.xの特定のバージョンを使用している場合は、'''ファイルを他の場所に配置する必要がある場合があります'''、[http://bugs.php.net/bug.php?id=48866 PHPバグ#48866を参照])''


For example your organisation has a main domain example.org, staff and students are contained in two child domains staff.example.org and students.example.org. The 3 domains (example.org, staff.example.org and students.example.org) each have a domain controller (dc01, dc02 and dc03 respectively.) Each domain controller contains a full, writable, representation of only the objects that belong to its domain. However, assuming that the Global Catalog has been enabled (see below) on one of the domain controllers (for example dc01) a query to the Global Catalog would reveal matching objects from all three domains. The Global Catalog is automatically maintained through replication across the active directory forest, it can also be enabled on multiple servers (if, for example, you need redundancy / load balancing.)
これで、LDAPサーバに接続するときに '''ldaps://''' を使用できるようになります。


To make use of this in Moodle to allow logins from multiple domains is simple. The Global Catalog runs on port 3268 as opposed to 389 for standard LDAP queries. As a result, still assuming the Global Catalog is running on dc01, the ''''ldap_host_url'''' would be ''ldap://dc01.example.org:3268''. The rest of the settings are the same as for other MS-AS Auth setups.
==付録==


You should use the ''''ldap_contexts'''' setting to indicate the locations of individuals you wish to grant access. To extend the example above a little: In the example.org domain users are all in the'' 'Users' ''OU, in the staff.example.org domain users are in two OUs at the root of the domain,'' 'Support Staff' ''and'' 'Teaching Staff' '', and in the students.example.org domain students are in an OU indicating the year that they enrolled, all of which are under the'' 'Students' ''OU. As a result our ''''ldap_contexts'''' setting may look a little like this:'' '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''.' The ''''ldap_search_sub'''' option should be set to'' 'Yes' ''to allow moodle to search within the child OUs.
===リソース制限の設定 RedHat Directory Server===


Its worth noting that the Global Catalog only contains a partial representation of the attributes of each object, as defined in the Partial Attribute Set supplied by Microsoft. However common information likely to be of use to a general Moodle installation (Forename, Surname, Email Address, sAMAccountName etc) is included in the set. For specific needs the schema can be altered to remove or add various attributes.
コマンドラインを使用して、バインドユーザDNの操作属性を設定できます。
ldapmodifyを使用して、次の属性を追加するだけです。
 
{| border="1" cellspacing="0" cellpadding="5"
!属性名
!説明
|-
| nsLookThroughLimit
|検索操作のために検査されるエントリの数を指定します。この属性に値-1を指定すると、制限がないことを示します。
|-
| nsSizeLimit
|検索操作に回答してサーバがクライアントアプリケーションに返すエントリの最大数を指定します。この属性に値-1を指定すると、制限がないことを示します。
|-
| nsTimeLimit
|サーバが検索操作の処理に費やす最大時間を指定します。この属性に値-1を指定すると、時間制限がないことを示します。
|-
| nsIdleTimeout
|接続が切断される前に、サーバへの接続がアイドル状態になる時間を指定します。値は秒単位で示されます。この属性に値-1を指定すると、制限がないことを示します。
|}


In most cases the Global Catalog is read-only, update queries must be made over the standard LDAP ports to the domain controller that holds the object in question (in our example, updating a student's details would require an LDAP query to the students.example.org domain controller - dc03, it would not be possible to update details by querying the Global Catalog.) The exception to this would be in an environment where there is only a single domain in the active directory forest; in this case the Global Catalog holds a writable full set of attributes for each object in the domain. However, for the purposes of Moodle authorisation, there would be no need to use the Global Catalog in this case.
<pre> LDAP Console Command-Line


====Enabling the Global Catalog====
ldapmodify -h redhat_dir_server -p 389 -D "cn=directory manager" -w secretpwd


The Global Catalog is available on Windows 2000 and Windows 2003 Active Directory servers. To enable, open the ‘Active Directory Sites and Services’ MMC (Microsoft Management Console) snap-in. Extend ‘Sites’ and then the name of the Site containing the active directory forest you wish to use. Expand the server you wish to enable the Global Catalog on, right click ‘NTDS settings’ and select the ‘Properties’ tab. To enable, simply click the ‘Global Catalog’ checkbox. Under a Windows 2000 server it is necessary to restart the server (although it won’t prompt you to); under Windows 2003 server it is not necessary to restart the server. In either case you will generally have to wait for the AD forest to replicate before the Global Catalog offers a representation of the entire AD forest. Changes made in Active Directory will also be subject to a short delay due to the latency involved with replication. If your AD servers are firewalled port 3268 will need to be opened for Global Catalog servers.
dn: uid=MoodleAdmin,ou=system,dc=myschool,dc=edu
If your organisation uses Microsoft Exchange then it its highly likely that at least one Domain Controller will already have Global Catalog enabled – Exchange 2000 and 2003 rely on the Global Catalog for address information, users also access the Global Catalog when using the GAL (Global Address List)
changetype: modify
add:nsSizeLimit
nsSizeLimit: 1000
</pre>


====ldap auth_user_create() only suports Novell====


After configuring user authentication with ldap I realized ldap only support edir (Novell) when combining ldap an email user confirmation. For example in my case (I use openldap) I have the following error after filling the user form:
==質問はありますか?==


auth: ldap auth_user_create() does not support selected usertype:"rfc2307" (..yet)
moodle.orgの[http://moodle.org/mod/forum/view.php?id=42 認証フォーラム]に投稿してください。


==関連情報==
==関連項目==


*[http://moodle.org/mod/forum/view.php?id=42 Using Moodle: User authentication] forum
* [[NTLM認証]]
*Using Moodle [http://moodle.org/mod/forum/discuss.php?d=32168 PHP LDAP module does not seem to be present] forum discussion
* [[Active_Directory]]
* [[LDAP enrolment]]
* [[LDAP登録]]
* [http://download.moodle.org/download.php/docs/en/how-to_guides/ldap_auth_and_enrolment_set-up.pdf LDAP認証および登録設定ガイド](PDF 227KB)


[[Category:管理者]]
フォーラムディスカッション:
[[Category:認証]]
* [http://moodle.org/mod/forum/view.php?id=42 ユーザ認証フォーラム]
* [http://moodle.org/mod/forum/discuss.php?d=32168 PHP LDAPモジュールが存在しないようです]フォーラムディスカッション
* [http://moodle.org/mod/forum/discuss.php?d=140901 AUTH_LDAP_SYNC_USERS.PHPとの同期により、生成されるアカウントが本来よりも少なくなる]フォーラムディスカッション
* [http://moodle.org/mod/forum/discuss.php?d=17198 複数のLDAPサーバの使用]フォーラムディスカッション


[[en:LDAP_authentication]]
[[en:LDAP authentication]]
[[es:LDAP_authentication]]
[[fr:Utiliser un serveur LDAP]]
[[de:LDAP-Server]]

2021年3月23日 (火) 06:23時点における最新版

このドキュメントでは、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の認証フォーラムに投稿してください。

関連項目

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