「LDAP認証」の版間の差分

提供:MoodleDocs
移動先:案内検索
 
(2人の利用者による、間の55版が非表示)
1行目: 1行目:
再作成中です - [[利用者:Mitsuhiro Yoshida|Mitsuhiro Yoshida]] 2009年1月20日 (火) 21:51 (CST)
{{認証}}
このドキュメントでは、MoodleでLightweight Directory Access Protocol(LDAP)認証を設定する方法について説明します。ユーザがMoodleでLDAPをインストールおよび管理するのを支援するために、基本、高度、およびいくつかのトラブルシューティングのセクションをカバーしています。


{{Moodle 1.9}}
==基本シナリオ==
ロケーション: '''サイト管理 > ユーザ > [[認証]] > LDAPサーバ''' の設定リンク
ほとんどのインストールに対応した、シンプルでわかりやすいアプローチです。
 
===前提条件===
Moodleは、異なるディレクトリ構造、特別な構成設定などを持ついくつかのタイプのLDAPサーバをサポートします。同じLDAPサーバタイプ(MS Active Directoryなど)を使用している場合でも、各サイトは完全に異なるディレクトリ構造を使用してユーザアカウントを保持できます。以下のセクションで設定例を示すために、ここでは、以下の特徴を持つ '''仮想''' のMoodleサイトおよびLDAPサーバを想定しています。MoodleサイトおよびLDAPサーバを想定しています。


このドキュメントは、MoodleのLDAP (Lightweight Directory Access Protocol) 認証をセットアップする方法に関して記述したものです。MoodleにおけるインストールおよびLDAP管理に関してユーザをサポートするため、基本設定、高度な設定およびトラブルシューティングに関して説明します。
==目次==
__TOC__
==基本シナリオ==


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


# あなたのMoodleサイトは、'''http://your.moodle.site/''' にあります。
#あなたのMoodleサイトは '''http://your.moodle.site/''' にあります。
# あなたのPHPにはLDAP拡張モジュールが含まれています。LDAP拡張モジュールは有効かつロードされ、 ユーザ「admin」でログインした場合、 ''http://your.moodle.site/admin/phpinfo.php''' に表示されます。
#LDAP拡張機能を使用してPHPインストールを構成しました。ロードされてアクティブ化され、'''http://your.moodle.site/admin/phpinfo.php'''(ユーザ 'admin' としてログイン)に移動すると表示されます。
# あなたのLDAPサーバのIPアドレスは、'''192.168.1.100''' です。
#LDAPサーバのIPアドレスは '''192.168.1.100''' です。
# あなたは、SSLで保護されたLDAP (LDAPS) を使用していません。この場合、特定のオペレーション (例 MS Active Directoryを使用してデータを更新できません  -- 以後MS-AD --) は動作しませんが、ユーザ認証だけでしたらOKです。
#設定でSSL付きのLDAP(LDAPSとも呼ばれます)を使用していません。これにより、特定の操作が機能しなくなる可能性があります(たとえば、MS Active Directoryを使用している場合はデータを更新できません -- 以降 MS-AD --)が、ユーザを認証するだけの場合は問題ありません。
# あなたは、ユーザの最初のログイン時にパスワードを変更させたくありません。
#ユーザがMoodleに初めてログインするときにパスワードを変更したくない。
# MS-ADを使用している場合、あなたは認証データのソースとしてシングルドメインを使用しています (詳細は付録をご覧ください)。
#MS-ADを使用している場合は、認証データのソースとして単一のドメインを使用しています(これについては付録を参照してください)。
# あなたは、LDAPツリーのルートとして、トップレベル識別名 '''dc=my,dc=organization,dc=domain''' を使用しています。
#LDAPツリーのルートとして、トップレベルの識別名(DN)である '''dc=my,dc=organization,dc=domain''' を使用しています。
# あなたは、管理者権限のないLDAPユーザアカウントを持ち、LDAPサーバにバインドします。これは、通常のLDAPサーバでは必要ありませんが、MS-ADでは必要とします。あなたのLDAPサーバに匿名バインドを許可する設定がなされていても、LDAPユーザアカウントを使用することで問題が生じることはありません。'''このアカウントとパスワードが有効期限切れにならないこと'''を確認して、可能な限り強固なパスワードを設定してください。Moodleの設定時、1度だけこのパスワードを入力する必要があります。ですから、可能な限り推測できないパスワードを作成することを恐れないでください。つまり、このユーザは、DN (識別名 Distinguished Name) '''cn=ldap-user,dc=my,dc=organization,dc=domain''' およびパスワード '''hardtoguesspassword''' を持ちます。
#LDAPサーバーへのバインドに使用する非特権のLDAPユーザアカウントがあります。特定のLDAPサーバでは必要ありませんが、MS-ADでは必要なので、LDAPサーバが必要としていなくても使っておいて損はありません。このアカウントとそのパスワードに有効期限がないことを確認し、できるだけ強力なパスワードを設定してください。このパスワードは、Moodleを設定する際、一度だけ入力する必要がありますので、できるだけ推測しにくいものにしてください。例えば、このユーザアカウントのDNが '''cn=ldap-user,dc=my,dc=organization,dc=domain''' で、パスワードが '''hardtoguesspassword''' だとします。
# あなたのすべてのMoodleユーザは、root直下にある '''moodleusers''' と呼ばれるOU (組織単位 organizational unit) に入ります。このOUは、DN (識別名 Distinguished Name) '''ou=moodleusers,dc=my,dc=organization,dc=domain''' を持ちます。
#すべてのMoodleユーザは、LDAPルートのすぐ下にある '''moodleusers''' と呼ばれる組織単位(OU)にいます。そのOUのDNは '''ou=moodleusers,dc=my,dc=organization,dc=domain''' です。
# あなたは、LDAPユーザのパスワードをMoodleに'''保存したくありません'''。
#あなたのLDAPユーザのパスワードがMoodleに保存されることはありません。


[[LDAP認証#目次|目次]]
=== LDAP認証の有効化===


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


管理者としてログインして、管理 >> ユーザ >> 認証オプション へ移動してください。「認証方法の選択」リストボックスで、「LDAPサーバを使用する」を選択してください。次のようなページが表示されます:
# ''サイト管理 > プラグイン > 認証 > 認証管理'' に移動し、LDAPサーバの反対側にある目のアイコンをクリックします。有効にすると、グレー表示されなくなります。
<br>
#設定リンクをクリックし、必要に応じて構成し(以下の情報を参照)、'変更を保存する' ボタンをクリックします。
::: [[Image:auth_ldap_config_screenshot.jpg]]
<br>


さて、値を入力する必要があります。一歩一歩進みましょう。
[[Image:LDAPserversettings.png|center]]


[[LDAP認証#目次|目次]]
あとは、値を埋めていくだけです。順を追って見ていきましょう。


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


54行目: 52行目:
====バインド設定====
====バインド設定====
{| border="1" cellspacing="0" cellpadding="5"
{| border="1" cellspacing="0" cellpadding="5"
! フィールド名
!フィールド名
! 入力値
!記入する値
|-
|-
| パスワードを隠す
|パスワードをキャッシュしないでください
| あなたがMoodleデータベースにユーザパスワードを'''保存したくない'''場合、「Yes」を選択してください。
| あなたはユーザのパスワードをMoodleのデータベースに保存 '''したくない''' ので、ここでは '''Yes''' を選択してください。
|-
|-
| 識別名
|識別名
| 上記で定義されたバインドユーザの識別名です。'''cn=ldap-user,dc=my,dc=organization,dc=domain''' と入力してください  (引用符なし)。
|これは、上記で定義されたバインドユーザの識別名です。"'''cn=ldap-user,dc=my,dc=organization,dc=domain'''"(引用符なし)と入力するだけです。
|-
|-
| パスワード
|パスワード
| 上記で定義されたバインドユーザのパスワードです。'''hardtoguesspassword''' と入力してください (引用符なし)。
|これは、上記で定義されたバインドユーザパスワードです。"'''hardtoguesspassword'''"(引用符なし)と入力します。
|}
|}


71行目: 69行目:
====ユーザルックアップ設定====
====ユーザルックアップ設定====
{| border="1" cellspacing="0" cellpadding="5"
{| border="1" cellspacing="0" cellpadding="5"
! フィールド名
!フィールド名
! 入力値
!記入する値
|-
|-
| ユーザタイプ
|ユーザタイプ
| 選択:  
|選択:
* '''Novel Edirectory''' あなたのLDAPサーバが、Novell eDdirectoryで稼動している場合、選択してください。
*'''Novell Edirectory'''は、LDAPサーバーがNovellのeDdirectoryを起動している場合に使用します。
* '''posixAccount (rfc2307)''' あなたのLDAPサーバが、RFC-2307準拠のLDAPサーバ (OpenLDAPサーバ) で稼動している場合、選択してください。
*'''posixAccount (rfc2307)''' は、RFC-2307と互換性のあるLDAPサーバが稼働している場合に使用します(Mac OS Xサーバを含むOpenLDAPが稼働している場合に選択してください)。
* '''posixAccount (rfc2307bis)''' あなたのLDAPサーバが、RFC-2307準拠のLDAPサーバで稼動している場合、選択してください。
*'''posixAccount (rfc2307bis)'''は、RFC-2307bis対応のLDAPサーバーが稼働している場合に使用します。
* '''sambaSamAccount (v.3.0.7)''' あなたのLDAPサーバが、SAMBA 3.x LDAPスキーマ拡張で稼動し、あなたが使用したい場合、選択してください。
*'''sambaSamAccount (v.3.0.7)''' は、LDAPサーバがSAMBAの3.x LDAPスキーマ拡張で動作していて、それを使用したい場合に使用します。
* '''MS ActiveDirectory''' あなたのLDAPサーバが、Microsoftアクティブディレクトリ (MS-AD) で稼動している場合、選択してください。
* LDAPサーバがマイクロソフト社のActive Directory(MS-AD)を使用している場合は、'''MS ActiveDirectory''' となります。
|-
|-
| コンテクスト
|コンテクスト
| あなたのすべてのMoodleユーザは、コンテクスト (コンテナ) のDN (識別名 Distinguished Name) で探されます。ここでは、'''ou=moodleusers,dc=my,dc=organization,dc=domain''' と入力してください。
|あなたの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''' 配下にサブ組織単位 (sub organizational unit サブコンテクスト) があり、あなたがMoodleにサブ組織単位を検索して欲しい場合、「Yes」を選択してください。そうでない場合、「No」を選択してください。
|あなたが、'''ou=moodleusers,dc=my,dc=organization,dc=domain'' からぶら下がっているサブ組織単位 (サブコンテクスト) を持っていて、Moodleにそこも検索させたい場合、これを '''yes''' に設定してください。それ以外の場合は、'''no''' に設定してください。
|-
|-
| Dereference aliases
|エイリアスの逆参照
| 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'''.
| 時々、あなたのLDAPサーバは、あなたが検索している本当の値が、実際にはLDAPツリーの別の場所にあることを教えてくれるでしょう (これはエイリアスと呼ばれます)。Moodleにエイリアスを '逆参照' させ、元の場所から本当の値を取得させたい場合、この設定を '''yes''' にしてください。Moodleにエイリアスを逆参照させたくない場合、'''no''' に設定してください。MS-ADを使用している場合、これを '''no''' に設定してください。
|-
|-
| User attribute
|ユーザ属性
| The attribute used to name/search users in your LDAP tree. This option takes a default value based on the ''User type'' value you choosed above. <u>So unless you need something special, you don't need to fill this in</u>.
| 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 でのログインはとにかく機能しません。


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.
注: ''管理 > サイト管理 > セキュリティ > [[サイトポリシー]]'' でユーザ名に拡張文字を許可することを検討することをお勧めします。
|-
|-
| Member attribute
|メンバー属性
| The attribute used to list the members of a given group. This option takes a default value based on the ''User type'' value you choosed above. <u>So unless you need something special, you don't need to fill this in.</u>
|特定のグループのメンバを一覧表示するために使用される属性。このオプションは、上記で選択した ''ユーザタイプ'' 値に基づいたデフォルト値を取ります。<u>したがって、特別なものが必要でない限り、これを入力する必要はありません。</u>


By the way, the usual values are '''member''' and '''memberUid'''.
ちなみに、通常の値は '''member''' '''memberUid''' です。
|-
|-
| Member attribute uses dn
|メンバー属性はdnを使用します
| Whether the member attribute contains distinguished names (1) or not (0).This option takes a default value based on the ''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>
|-
|-
| Object class
|オブジェクトクラス
| The type of LDAP object used to search for users. This option takes a default value based on the ''User type'' value you choosed above. <u>So unless you need something special, you don't need to fill this in.</u>
|ユーザの検索に使用されるLDAPオブジェクトのタイプ。このオプションは、上記で選択した ''ユーザタイプ'' 値に基づいたデフォルト値を取ります。<u>したがって、特別なものが必要でない限り、これを入力する必要はありません。</u>
*空白にした場合は、上記で選択した ''ユーザタイプ'' に基づくデフォルト値が使用されます(以下参照)。
*"objectClass=some-string" を指定すると、フィルタとして "(objectClass=some-string)" が提供されます。
*"("で始まらない値を提供した場合、それは "objectClass" に設定されるべき値であると仮定されます。つまり、"some-string" を指定すると、フィルタとして "(objectClass=some-string)" が指定されます。
*もし、あなたが "(" で始まる文字列を提供した場合、それはそのまま渡されます。もし、あなたが "(&(objectClass=user)(enabledMoodleUser=1))" を指定した場合、フィルタとしてそれを通過させます。
 
'''注''': 最後のケースでは、その機能はインタラクティブログインで使用できます。


Here are the default values for each of the ''ldap_user_type'' values:
''ldap_user_type'' 値のデフォルト値は次のとおりです。
* '''User''' for Novel eDirectory
* '''(objectClass=user)''' Novel eDirectoryの場合
* '''posixAccount''' for RFC-2037 and RFC-2037bis
* '''(objectClass=posixAccount)''' RFC-2037およびRFC-2037bisの場合
* '''sambaSamAccount''' for SAMBA 3.0.x LDAP extension
* '''(objectClass=sambaSamAccount)''' SAMBA 3.0.x LDAP拡張機能の場合
* '''user''' for MS-AD
* '''(objectClass=user)''' MS-ADの場合
If you get an error about a problem with updating the ldap server (even if you have specified not to write changes back to the ldap server) try setting the ldap object class to * - see http://moodle.org/mod/forum/discuss.php?d=70566 for a discussion on this problem
* '''(objectClass=*)''' デフォルトの場合
ldapサーバの更新に問題があるというエラーが出る場合(変更内容をldapサーバに書き戻さないように指定している場合も含む)、ldapオブジェクトクラスを * に設定してみてください。この問題については、http://moodle.org/mod/forum/discuss.php?d=70566 を参照してください。
|}
|}


[[LDAP認証#目次|目次]]
====パスワードの強制変更====
{| border="1" cellspacing="0" cellpadding="5"
!フィールド名
!記入する値
|-
|パスワードの強制変更
| '''注: この設定は、LDAP同期ユーザタスクを使用してユーザを作成する場合にのみ使用されます。ユーザがmoodleへの最初のログインの一部として作成された場合は使用されません''' 。


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


<u>ユーザが最初のログイン時にパスワードを変更しないようにするため、この設定を ''No'' にしてください</u>。
|-
|-
| ldap_opt_deref
|標準のパスワード変更ページを使用する
| しばしば、LDAPサーバはあなたが探している真の値が他のLDAPツリーにあると伝えるでしょう (これはエイリアスと呼ばれます)。あなたがMoodleに修飾参照を求めて、真の値をオリジナルロケーションから取得したい場合、「Yes」を選択してください。Moodleに修飾参照を求めない場合、「No」を選択してください。あなたが、MS-ADを使用している場合、「No」を選択してください。
|
|-
*これを ''Yes'' に設定すると、ユーザがパスワードを変更したいときはいつでも、Moodleは独自の標準パスワード変更ページを使用します。
| ldap_user_attribute
*これを ''No'' に設定すると、Moodleは "パスワード変更URL" というフィールドで指定されたページを使用します(以下を参照)。
| この属性は、あなたのLDAPツリーでユーザに名前をつける/検索するために使用されます。このオプションは、あなたが上記で選択した ''ldap_user_type'' の値から初期値を取得します。ですから、特別なことをすること以外、ここに値を入力する必要はありません。


通常、'''cn''' (Novell eDirectoryおよびMS-AD) または '''uid''' (RFC-2037, RFC-2037bisおよびSAMBA 3.x LDAP extension) ですが、あなたがMS-ADを使用している場合、必要であれば '''sAMAccountName''' (pre-Windows 2000 ログオンアカウント名) を使用することもできます。
MoodleからLDAPパスワードを変更するにはLDAPS接続が必要になる場合があることに注意してください(これは実際にはMS-ADの要件です)。それに加えて、上記で指定されたバインドユーザは、他のユーザのパスワードを変更するために必要なパーミッションを持っている必要があります。
|-
| ldap_memberattribute
| グループのメンバ一覧を表示するために使用される属性です。このオプションは、上記で選択した''ldap_user_type'' 値をデフォルトとして持ちます。ですから、特別なことをすること以外、ここに値を入力する必要はありません。


通常の値は、'''member''' および '''memberUid''' です。
また、Novell eDirectoryとActive Directory以外のMoodleからパスワードを変更するためのコードはほとんどテストされていないため、これは他のLDAPサーバでは機能する場合と機能しない場合があります。
|-
|-
| ldap_objectclass
|パスワードのフォーマット
| ユーザ検索に使用されるLDAPオブジェクトのタイプです。このオプションは、上記で選択した''ldap_user_type'' 値をデフォルトとして持ちます。ですから、特別なことをすること以外、ここに値を入力する必要はありません。
| LDAPサーバに送信する前に、新しいパスワードを暗号化する方法を指定します: プレーンテキスト、MD5ハッシュ、またはSHA-1ハッシュ。たとえば、MS-ADはプレーンテキストを使用します。
 
下記は、''ldap_user_type'' のデフォルト値です:
* '''User''' Novel eDirectory用
* '''posixAccount''' RFC-2037およびRFC-2037bis用
* '''sambaSamAccount''' SAMBA 3.0.x LDAP extension用
* '''user''' MS-AD用
|-
|-
| Force change password
|パスワード変更URL
| ユーザが最初にMoodleへログインしたときに、パスワードの変更を強制したい場合、「Yes」を設定してください。そうでない場合、「No」と設定してください。変更を強制されるパスワードは、あなたのLDAPサーバにあるパスワードであることに気をつけてください。
|ここでは、ユーザがユーザ名/パスワードを忘れた場合に回復または変更できる場所を指定できます。これは、ログインページとユーザページのボタンとしてユーザに提供されます。これを空白のままにすると、ボタンは印刷されません。
|}


<u>最初のログインでユーザにパスワードを変更させたくない場合、この設定を「No」のままにしてください。</u>
==== LDAPパスワードの有効期限設定====
{| border="1" cellspacing="0" cellpadding="5"
!フィールド名
!記入する値
|-
|-
| Use standard Change Password Page
|有効期限
|
|
* 「Yes」を設定した場合、Moodleは標準のパスワード変更ページを使用し、ユーザはいつでも自分のパスワードを変更することができます。
*これを ''No'' に設定すると、Moodleはユーザのパスワードの有効期限が切れているかどうかをチェックしません。
* 「No」を設定した場合、Moodleは「パスワードURLの変更」 (管理 >> ユーザ >> 認証 >> 一般設定) で指定されたページを使用します。
*これを ''LDAP'' に設定すると、MoodleはユーザのLDAPパスワードの有効期限が切れているかどうかをチェックし、パスワードの有効期限が切れる数日前に警告します。パスワードの有効期限が切れると、"パスワードの有効期限が切れました" というメッセージが表示され、ユーザがMoodleからパスワードを変更できる場合は、変更するオプションが提供されます。


MoodleからLDAPパスワードを変更するには、LDAPS接続が必要であることに注意してください (少なくともMS-ADでは間違っていません)。
現在のコードは、Novell eDirectory LDAPサーバとMS-ADのみを扱います。
 
<u>したがって、Novell eDirectoryサーバやMS-ADを持っていない限り、ここでは ''No'' を選択します。</u>
|-
|有効期限の警告
|この値は、パスワードの有効期限が切れる何日前に、パスワードの有効期限が近づいていることをユーザに警告するかを設定します。
|-
|有効期限属性
|パスワードの有効期限を確認するために使用されるLDAPユーザ属性。このオプションは、上記で選択した ''ユーザタイプ'' 値に基づいたデフォルト値を取ります。<u>したがって、特別なものが必要でない限り、これを入力する必要はありません。</u>
|-
|グレースログイン
|この設定は、Novell eDirectoryに固有です。 ''Yes'' に設定されている場合は、LDAPグレースログインサポートを有効にします。パスワードの有効期限が切れると、ユーザはグレースログインカウントが0になるまでログインできます。


また、Novell eDirectory以外は、Moodleからパスワードを変更するコードは、ほとんどテストされていません。ですから、他のLDAPサーバでの動作は保証されません。
<u>そのため、Novell eDirectoryサーバを使用していて、Graceloginのサポートを許可したい場合以外は、ここでは ''No'' を選択します。</u>
|-
|-
| ldap_expiration
|グレースログイン属性
|  
|この設定は現在、コードでは使用されていません(Novell eDirectoryに固有です)。
* この設定を「No」にすると、Moodleは有効期限に関わらずユーザのパスワードをチェックしません。
* この設定を「LDAP」にすると、Moodleは有効期限に関わらずユーザのLDAPパスワードをチェックしません。そして、何日でパスワードの有効期限が切れるかユーザに警告します。


現在のコードでは、Novell eDirectory LDAPサーバのみ扱うことができます。しかし、MS-ADでも動作するようにできるパッチがあちこちに投稿されています (authenticationを参照)。
<u>したがって、これを入力する必要はありません。</u>
|}


<u>ですから、あなたがNovell eDirectoryサーバを使用している (またはパッチを使用している) 以外、ここでは「No」を選択してください。</u>
====ユーザ作成を有効にする====
{| border="1" cellspacing="0" cellpadding="5"
!フィールド名
!記入する値
|-
|-
| ldap_expiration_warning
|外部でユーザを作成する
| この属性では、パスワード有効期限切れの何日前に、ユーザにパスワード有効期限が警告されるか設定します。
|新規(匿名)ユーザは、外部LDAPサーバ上にユーザアカウントを自己作成し、電子メールで確認できます。 これを有効にする場合は、ユーザ作成時にモジュール固有のオプションを設定し、''サイト管理 > プラグイン > 認証 > 認証管理'' の ''auth_instructions'' フィールドにいくつかの指示を記入することも忘れないでください。そうしないと、新しいユーザは新しいアカウントを自分で作成することができません。
 
Novell eDirectoryおよびMS-ADは、外部でユーザを作成できます。 RFC-2307準拠のサーバでユーザを作成することもできます。
|-
|-
| ldap_exprireattr
|新規ユーザのコンテクスト
| この属性は、パスワードの有効期限をチェックするために使用されます。このオプションは、デフォルト値として、あなたが上記で選択した ''ldap_user_type'' の値を取得します。ですから、特別なことをすること以外、ここに値を入力する必要はありません。
|ユーザが作成されるコンテクストを指定します。このコンテクストは、セキュリティの問題を防ぐために、他のユーザのコンテクストとは異なる必要があります。
|}
 
====システムロールを割り当てる====
{| border="1" cellspacing="0" cellpadding="5"
!フィールド名
!記入する値
|-
|-
| ldap_gracelogins
|システムロールマッピング
| ここでは、Novell eDirectory特有の設定を行います。「Yes」に設定した場合、LDAPグレースログインをサポートします。パスワードの有効期限が切れた後、ユーザはグレースカウントがゼロになるまでログインできます。
|このセクションでは、システムコンテクストで割り当てることができるすべてのロールを一覧表示します。デフォルトでは、これは "マネージャコンテクスト" と "コース作成者コンテクスト" になりますが、[[カスタムロールの作成|ロール定義]]でカスタマイズできます。
 
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を新しいアプローチに移行する必要があります。
 
|}


<u>あなたがNovell eDirectoryサーバを使用し、グレースログインをサポートする以外、ここでは「No」を選択してください。</u>
====ユーザアカウントの同期====
{| border="1" cellspacing="0" cellpadding="5"
!フィールド名
!記入する値
|-
|-
| ldap_graceattr
|外部ユーザの削除
| 現在、この設定はコードで使用されていません (Novell eDirectory特有の設定です)。
|ユーザが外部ソースから削除されたときに、一括同期中に内部ユーザアカウントをどのように処理するかを指定します。一時停止されたユーザのみが、ext sourceに再表示された場合、自動的に復活します。
|}


<u>ですから、ここに値を入力する必要はありません。</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?
| すべてのMoodlecreatorを含むDN (識別名 Distinguished Name) のグループです。これは、あなたがcreatorとしたい各ユーザに関するposixGroupの "memberUid" 属性です。あなたのグループが「creators」と呼ばれる場合、ここに ''creators'', type '''cn=creators,ou=moodleusers,dc=my,dc=organization,dc=domain''' と入力してください。ユーザのフルDNを使用しないでください (例  '''memberUid: cn=JoeTeacher,ou=moodleusers,dc-my,dc=organizations,dc=domain''' ではなく、 '''memberUid: JoeTeacher''' を使用してください)。
|すべてのクライアント(またはほとんどのクライアント)がMS Internet Explorerを使用している場合は、このオプションを設定して、SSOログインの特定の手順をバイパスし、ログイン時間を短縮できます。これはMS Internet Explorerでのみ機能しますが、他のブラウザを適切な方法で処理します(それらは自動的にプレーンログインページに送信されます)。
|}


eDirectoryでは、グループのオブジェクトクラスは (デフォルトで) '''posixGroup''' ではありませんが、メンバー属性は '''memberUid,''' ではなく '''member,''' です。また、メンバー属性の値は、当該ユーザのフルDNとなります。このフィールドを使用できるようMoodleのコードを修正することもできますが、より良いソリューションは、新しい '''posixGroup''' の '''objectClass''' 属性をあなたのcreatorグループに追加し、それぞれのcreatorグループの '''memberUid''' 属性にCNにを設定することです。
====データマッピング====
{| border="1" cellspacing="0" cellpadding="5"
!フィールド名
!記入する値
|-
|ファーストネーム
| LDAPサーバでユーザの名を保持する属性の名前。これは通常、 '''givenName''' または '''displayName''' です。


MSアクティブディレクトリでは、セキュリティグループを作成して、あなたのcreatorの一部に追加する必要があります。上記のLDAPコンテクストが 'ou=staff,dc=my,dc=org' の場合、あなたのグループでは 'cn=creators,ou=staff,dc=my,dc=org' に設定してください。ユーザの一部が他のコンテクストにあり、同じセキュリティグループに追加された場合、同じフォーマットを使用して、これらを分離したコンテクストとして最初のコンテクストの次に追加する必要があります。
<u>この設定はオプションです。</u>
|-
|姓
| LDAPサーバでユーザの名前を保持する属性の名前。これは通常 '''sn''' です。


<u>この設定は任意です。</u>
<u>この設定はオプションです。</u>
|-
|-
| First name
|電子メールアドレス
| この属性は、LDAPサーバのユーザの名を持ちます。通常、'''givenName''' です。
| LDAPサーバでユーザの電子メールアドレスを保持する属性の名前。これは通常 '''mail''' です。


<u>この設定は任意です。</u>
<u>この設定はオプションです。</u>
|-
|-
| Surname
|市/町
| この属性は、LDAPサーバのユーザの姓を持ちます。通常、'''sn''' です。
| LDAPサーバでユーザの市/町を保持する属性の名前。これは通常、 '''l''' (小文字のL) または '''localityName''' (MS-ADでは無効) です。


<u>この設定は任意です。</u>
<u>この設定はオプションです。</u>
|-
|-
| Email address
|
| この属性は、LDAPサーバのユーザのメールアドレスを持ちます。通常、'''mail''' です。
| LDAPサーバでユーザの国を保持する属性の名前。これは通常、 '''c''' または '''countryName''' です (MS-ADでは無効です)。


<u>この設定は任意です。</u>
<u>この設定はオプションです。</u>
|-
|-
| Phone 1
|言語
| この属性は、LDAPサーバのユーザの電話番号を持ちます。通常、'''telephoneNumber''' です。
| '''preferredLanguage'''


<u>この設定は任意です。</u>
<u>この設定はオプションです。</u>
|-
|-
| Phone 2
|説明
| この属性は、LDAPサーバのユーザの追加の電話番号を持ちます。'''homePhone'''、'''mobile'''、'''pager'''、'''facsimileTelephoneNumber''' または他の名称を使用できます。
| '''description'''


<u>この設定は任意です。</u>
<u>この設定はオプションです。</u>
|-
|-
| Department
|ウェブページ
| この属性は、LDAPサーバのユーザの学部または学科名を持ちます。これは通常、'''departmentNumber'''(posixAccountおよび恐らくeDirectory) または '''department'''' (MS-AD) です。
|<u>この設定はオプションです。</u>
 
<u>この設定は任意です。</u>
|-
|-
| Address
| IDナンバー
| この属性の名称は、あなたのLDAPサーバでユーザの所在地住所 (番地) を保持します。これは通常、'''streetAddress''' または '''street'''' です。
|


<u>この設定は任意です。</u>
<u>この設定はオプションです。</u>
|-
|-
| City/town
|機関
| この属性の名称は、あなたのLDAPサーバで、ユーザの所在地住所 (市/町) を保持します。これは通常、'''l''' (小文字のL) または '''localityName''' (MS-ADでは有効ではありません) です。
|


<u>この設定は任意です。</u>  
<u>この設定はオプションです。</u>
|-
|-
| Country
|部門
| この属性の名称は、あなたのLDAPサーバで、ユーザの所在地住所 (国) を保持します。これは通常、'''c''' または '''countryName''' (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
|
|}
|}


その他のフィールドは、すべての認証方法で一般的なため、ここには記載しません。
=====カスタムユーザプロファイルフィールド=====
 
''サイト管理 > ユーザ > アカウント > ユーザプロファイルフィールド'' で作成されたユーザプロファイルフィールドは、データマッピングフィールドリストの最後に、'''アドレス''' フィールドの後に自動的に表示されるようになりました。例を参照してください。
[[File:ldapcustomuserprofilefields.jpg]]
 
== LDAPユーザの同期ジョブを有効にする==
 
LDAPユーザ同期ジョブ( ''\auth_ldap\task\sync_task'' )[[スケジュールタスク|スケジュールされたタスク]] (Moodle 3.0で新しくなりました。以前はCLIスクリプトがありました。詳細はMDL-51824をご覧ください) は、ユーザ情報の作成および更新、LDAPアカウントの一時停止および削除を行います。
 
LDAPサーバ認証を有効にした後、管理者はLDAPユーザ同期ジョブを次のように有効にして構成する必要があります。
 
# ''サイト管理 > サーバ > スケジュールされたタスク'' に移動し、LDAPユーザの同期ジョブの反対側にある歯車のアイコンをクリックします。
#実行の希望の頻度を選択し、無効なチェックボックスのチェックを外してタスクを有効にします。
{{Warning| 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以降のバージョンのオペレーティングシステムに含まれています。以下の主題の詳細については、 '''[[Active Directory |ここにアクセスしてください]]''' 。
 
*警告: 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()関数は、ラウンドロビンモードではなく、サーバを順番に処理します。したがって、プライマリサーバに障害が発生した場合は、接続がタイムアウトするのを待ってから、次のサーバに切り替える必要があります。
 
参照: [http://moodle.org/mod/forum/discuss.php?d=17198 複数の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=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サーバを使用する===
このアプローチでは、LDAPサーバにインターネットベースのCAからの証明書がインストールされています。これは、ディレクトリサーバにインターネットアドレスとホスト名があることを意味します。 Moodleサーバは認証局を信頼し、インターネットにアクセスできる必要があります。このアプローチは、通常、証明書のコストが発生するため、あまり使用されません。また、ディレクトリサーバとMoodleサーバをインターネットに公開する必要があります。
複数のldap_host_urlフィールドを作成することで、あなたのシステムに弾性を与えることができます。単に下記のシンタックスを使用してください:<br />
ldap://my.first.server ; ldap://my.second.server ; ...


もちろん、これはすべてのサーバがディレクトリ情報を共有し、複製または同期メカニズムがeDirectoryに導入され、メインのLDAP互換ディレクトリが一般化されている場合に動作します。
== Linuxサーバ==
'''これらの手順は、信頼できる自己署名証明書を使用してリンクを確立するためのものです。'''


Moodle 1.5 - 1.6に実装されているLDAP認証には1つの欠陥があります: auth_ldap_connect() 関数は、サーバをラウンドロビンモードでは処理せず、連続的に処理します。このため、プライマリサーバが停止した場合、次のサーバに切り替わるまでコネクションのタイムアウトを待つ必要があります。
''注: Red Hat Enterprise Linux 6サーバ用に作成されているため、他のLinuxディストリビューションは、特にSSL証明書とOpenLdap構成ファイルの場所が異なる場合がありますが、コアプリンシパルは同じです。''


===LDAPツリーで複数ユーザロケーション (コンテクスト) を使用する===
ディレクトリサーバがオンラインであり、LDAPSポート(636)でSSL接続を受け入れていることを確認するには、次のコマンドを使用できます。
例えば、すべてのユーザアカウントが '''ou=people,dc=my,dc=organization,dc=domain''' または '''ou=people,o=myorg''' コンテナの中に保存されるようにディレクトリツリーがフラットな場合、複数ユーザロケーションを使用する必要はありません。
  openssl s_client –connect <ldap server ip address>:636


逆に、あなたがユーザ管理をACLメカニズムに委任する場合、ユーザを'''ou=students,ou=dept1,o=myorg''' および '''ou=students,ou=dept2,o=myorg''' のようなコンテナに保存することができます。
あなたのディレクトリサーバの証明書(.crt)を取得し、Moodleサーバのssl証明書ディレクトリにアップロードしてください 。RHEL6では、これは '''/etc/ssl/certs''' にあります。


次に、代わりの方法です :
'DER' X509証明書を 'PEM' 公開鍵証明書に変換します。
* ldap_search_sub属性で '''o=myorg''' レベルを探して '''yes''' を設定してください。
openssl x509 -in my_server_certificate.cer -inform DER -out my_server_certificate.pem -outform PEM
* ldap_contextに '''ou=students,ou=dept1,o=myorg ; ou=students,ou=dept2,o=myorg''' を設定してください。


2つのソリューションのどちらを選ぶかは、あなたのディレクトリツリーおよびLDAPソフトウェアのインデックス能力のベンチマークに大きく依存します。そのような深いツリーには、異なる識別名を持ちながら、同じ一般名 (cn) を共有する可能性があることに注意してください。この場合、結果として (常に同じユーザを返す) 2番目のソリューションを選ぶ必要があります。
c_rehashを使用して証明書ハッシュを作成する
c_rehash
'' c_rehashがインストールされていない場合は、次のコマンドを使用してインストールします。 yum install /usr/bin/c_rehash''


===LDAPS (LDAP + SSL) を使用する===
DNS名でLDAPSサーバにアクセスできることを確認します。これは、ホストファイル(/etc/hosts)にエントリを追加することを意味する場合があります。
====MSアクティブディレクトリ + SSL ====
<ldap server ip address>    my_server.mydomain.school


認証局 (Certificate Authority) がインストールされていない場合、まず次のようにインストールしてください:
証明書を検証して、正しくインストールされていることを確認します
# '''スタート''' -> '''コントロールパネル''' -> '''プログラムの追加と削除''' をクリックする。
openssl verify -verbose -CApath /etc/ssl/certs /etc/ssl/certs/my_server_certificate.pem
# 「'Windowsコンポーネントの追加と削除''」をクリックして、'''インターネット認証サービス''' を選択する。
/etc/ssl/certs/my_server_certificate.pem: OK
# '''インターネット認証サービス''' のインストール手順に従う。エンタープライズレベルの選択をお勧めします。


WindowsインストールCDの\Support\toolsディレクトリから suptools.msi をインストールすることで、SSLが有効にされていることを確認してください。サポートツールをインストールした後に:
これで、SSLを介してLDAPSサーバにエラーなしで接続できるようになります。
# '''スタート''' -> '''ファイル名を指定して実行''' を選択して、入力フィールドに '''ldp''' と入力してください。
openssl s_client –connect <ldap server DNS name>:636
# ldapウィンドウから '''接続''' -> '''接続''' を選択して、有効なホスト名およびポート番号 '''636''' を入力してください。また、SSLチェックボックスをチェックしてください。


正常に設定された場合、接続に関する情報が表示されます。
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


次のステップでは、PHPのOpenLDAP拡張モジュールのSSL証明書チェックを無効にしてください。ほとんどの場合、WindowsサーバではプレコンパイルされているPHPバージョンを使用していると思われますので、''C:\OpenLDAP\sysconf'' ディレクトリを作成してください。新しく作成したディレクトリに、次のコンテンツを含んだ "ldap.conf" という名称のファイルを作成してください::
最後に、ldaps://<サーバDNS名>を使用するようMoodleを設定する前に、Apacheを再起動する必要があるかもしれません。
httpd -k restart


TLS_REQCERT never.
== Windowsサーバ==
'''これらの手順は、未確認の自己署名証明書を使用してリンクを確立するためのものです。'''


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


==付録==
TLS_REQCERT never


===MSアクティブディレクトリの子ドメインおよびグローバルカタログ===
''(PHP 5.3.xの特定のバージョンを使用している場合は、'''ファイルを他の場所に配置する必要がある場合があります'''、[http://bugs.php.net/bug.php?id=48866 PHPバグ#48866を参照])''


現在、Moodleでは複数ドメインコントローラのサポートのみに限定されています。特にそれぞれのLDAPサーバは同一の情報を含んでドメインコントローラリスト上にある必要があります。あなたが複数のドメインにユーザを持っている場合、これが問題となります。1つの解決方法は、MS-ADと連携するときにグローバルカタログを使用することです。グローバルカタログはリードオンリー、MS-ADフォレストを部分的に表示するために、またオブジェクトのディレクトリが見つからないときにディレクトリ全体を検索するために設計されています。
これで、LDAPサーバに接続するときに '''ldaps://''' を使用できるようになります。


例えば、あなたの属している組織が「example.org」というドメインを持っていて、スタッフおよび学生が2つの子ドメイン「staff.example.org」および「student.exapmle.org」に含まれているとしましょう。3つのドメイン (example.org、staff.example.orgおよびstudents.example.org) は、それぞれドメインコントローラ (dc01、dc02およびdc03) を持っています。それぞれのドメインコントローラは、そのドメインのみに属し完全に書込み権があるオブジェクトを含みます。しかし、ドメインコントローラの1つでグローバルカタログが有効にされていると仮定すると (下記参照)、グローバルカタログへのクエリーにより、合致したオブジェクトがすべてのドメインから漏洩してしまいます。グローバルカタログは、アクティブディレクトリフォレストの複製を通して自動的に保持され、複数のサーバで有効にすることもできます (その場合、冗長性およびロードバランシングが必要です)。
==付録==


複数のドメインからログインできるようMoodleでこれを使用するのは簡単です。標準的なLDAPのクエリポート389に対して、グローバルカタログはポート3268で動作します。結果として、グローバルカタログがdc01で動作していると仮定すると「'''ldap_host_url'''」は「ldap://dc01.example.org:3268」となります。残りの設定は、MS-ASの認証設定と同じです。
===リソース制限の設定 RedHat Directory Server===


個々のロケーションにアクセス権限を与えたい場合、「'''ldap_contexts'''」設定を使用してください。上記の例を少しだけ拡張してみましょう: example.orgドメインのユーザはすべて「Users」OU に入り、staff.example.orgドメインのユーザはrootドメインの2つのOU 「Support Staff'」および「Teaching Staff」に入ります。students.example.orgドメインの学生は登録された年度を示すOUに入り、これらすべては「Students」OU配下にあります。結果として、「'''ldap_contexts'''」の設定は次のようになります:'' 'OU=Users,DC=example,DC=org; OU=Support Staff,DC=staff,DC=example,DC=org; OU=Teaching Staff,DC=staff,DC=example,DC=org; OU=Students,DC=students,DC=example,DC=org''.' Moodleが子OUを検索できるよう「'''ldap_search_sub'''」オプションは「Yes」にしてください。
コマンドラインを使用して、バインドユーザDNの操作属性を設定できます。
ldapmodifyを使用して、次の属性を追加するだけです。


Microsoftから提供される部分的な属性セットとして、グローバルカタログがそれぞれのオブジェクト属性の部分的な表現のみ含んでいることは注目に値します。しかし、一般的なMoodleインストールで使用される通常の情報 (姓、名、メールアドレス、sAMAccountName等) がセットの中に含まれています。特定の利用に対して、スキーマの様々な属性を削除または追加することができます。
{| border="1" cellspacing="0" cellpadding="5"
!属性名
!説明
|-
| nsLookThroughLimit
|検索操作のために検査されるエントリの数を指定します。この属性に値-1を指定すると、制限がないことを示します。
|-
| nsSizeLimit
|検索操作に回答してサーバがクライアントアプリケーションに返すエントリの最大数を指定します。この属性に値-1を指定すると、制限がないことを示します。
|-
| nsTimeLimit
|サーバが検索操作の処理に費やす最大時間を指定します。この属性に値-1を指定すると、時間制限がないことを示します。
|-
| nsIdleTimeout
|接続が切断される前に、サーバへの接続がアイドル状態になる時間を指定します。値は秒単位で示されます。この属性に値-1を指定すると、制限がないことを示します。
|}


ほとんどの場合、グローバルカタログはリードオンリーです。標準のLDAPポートを通して、問題になっているオブジェクトを保持しているドメインコントローラのクエリーを更新する必要があります (私たちの例では、学生の詳細を更新するには、students.example.orgのドメインコントローラ (dc03) に対するLDAPクエリーが必要です。グローバルカタログのクエリーで更新することはできません)。例外は、これがアクティブディレクトリフォレストのシングルドメインのみにある環境です。この場合、グローバルカタログはドメイン内のそれぞれのオブジェクト属性のフルセットに対する書込み権を保有します。しかし、Moodle認証では、この場合のグローバルカタログを使用する必要はありません。
<pre> LDAP Console Command-Line


====グローバルカタログを有効にする====
ldapmodify -h redhat_dir_server -p 389 -D "cn=directory manager" -w secretpwd


グローバルカタログは、Windows 2000およびWindows 2003のアクティブディレクトリサーバで利用することができます。有効にするには「アクティブディレクトリサイトとサービス」のMMC (Microsoft Management Console) スナップインを開いてください。「Sites」を広げて、あなたが使用したいアクティブディレクトリフォレストを含むサイト名を入力してください。あなたがグローバルカタログを有効にしたいサーバをクリックして、右クリックで「NTDS settins」を選択した後、「Properties」タブを選択してください。有効にするには、「Global Catalog」チェックボックスをクリックしてください。Windows2000サーバでは、(再起動を要求されませんが) サーバを再起動する必要があります。Windows2003サーバでは、サーバを再起動する必要はありません。一般的にどちらのケースでも、全体を表示するためにグローバルカタログの複製を待つ必要があります。アクティブディレクトリで行われる変更でも、複製に関わるわずかな遅れが生じます。あなたのADサーバがファイアーウォール内にあり、ポート3268が閉じられている場合、グローバルカタログサーバのために開ける必要があります。あなたの組織がMicrosoft Exchangeを使用している場合、すでに1つ以上のドメインコントローラでグローバルカタログが有効にされていると思われます。Exchange 2000および2003は、情報を解決するためにグローバルカタログを信頼し、ユーザがGAL (Global Adress List) を使用している場合、グローバルカタログにアクセスすることもできます。
dn: uid=MoodleAdmin,ou=system,dc=myschool,dc=edu
changetype: modify
add:nsSizeLimit
nsSizeLimit: 1000
</pre>


====ldap auth_user_create() は、Novellのみサポートする====


ユーザ認証をLDAPに設定した後で、私は気付きました。メールによるユーザ確認と組み合わせた場合、LDAPはedit (Novell) のみサポートするようです。例えば私の場合 (openladapを使用)、ユーザフォーム入力時に下記のエラーが表示されます:
==質問はありますか?==


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


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


*Using Moodle [http://moodle.org/mod/forum/view.php?id=42 ユーザ認証j] フォーラム - 英語
* [[NTLM認証]]
*Using Moodle [http://moodle.org/mod/forum/discuss.php?d=32168 PHP LDAPモジュールがインストールされていないようです] フォーラムディスカッション - 英語
* [[Active_Directory]]
* [[LDAPユーザ登録]]
* [[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の認証フォーラムに投稿してください。

関連項目

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