「LDAP認証」の版間の差分
Mitsuhiro Yoshida (トーク | 投稿記録) |
Mitsuhiro Yoshida (トーク | 投稿記録) 編集の要約なし |
||
(同じ利用者による、間の34版が非表示) | |||
1行目: | 1行目: | ||
{{Moodle 1.9}} | {{Moodle 1.9}} | ||
ロケーション: '''サイト管理 > ユーザ > [[認証]] > LDAPサーバ''' の設定リンク | ロケーション: '''サイト管理 > ユーザ > [[認証]] > LDAPサーバ''' の設定リンク | ||
このドキュメントには、MoodleのLDAP (Lightweight Directory Access Protocol) 認証をセットアップする方法を記述します。MoodleにおけるLDAPのインストールおよび管理に関してユーザをサポートするため、基本設定、高度な設定およびトラブルシューティングに関して説明します。 | |||
==目次== | ==目次== | ||
__TOC__ | __TOC__ | ||
==基本シナリオ== | ==基本シナリオ== | ||
=== | ===前提条件=== | ||
# あなたのMoodleサイトは、'''http://your.moodle.site/''' にあります。 | # あなたのMoodleサイトは、'''http://your.moodle.site/''' にあります。 | ||
# | # あなたのPHPにはLDAP拡張モジュールが含まれています。LDAP拡張モジュールは有効化およびロードされ、 ユーザ「admin」でログインした場合、'''http://your.moodle.site/admin/phpinfo.php''' に表示されます。 | ||
# あなたの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 --) は動作しませんが、ユーザ認証だけでしたらOKです。 | ||
# | # あなたは、ユーザの初回ログイン時、パスワードを変更させたくありません。 | ||
# MS-ADを使用している場合、あなたは認証データのソースとしてシングルドメインを使用しています (詳細は付録をご覧ください)。 | # MS-ADを使用している場合、あなたは認証データのソースとしてシングルドメインを使用しています (詳細は付録をご覧ください)。 | ||
# あなたは、LDAPツリーのルートとして、トップレベル識別名 '''dc=my,dc=organization,dc=domain''' を使用しています。 | # あなたは、LDAPツリーのルートとして、トップレベル識別名 '''dc=my,dc=organization,dc=domain''' を使用しています。 | ||
26行目: | 24行目: | ||
===Moodle認証の設定=== | ===Moodle認証の設定=== | ||
管理者としてログインして、管理 | 管理者としてログインして、管理 > ユーザ > 認証オプション へ移動してください。「認証方法の選択」リストボックスで、「LDAPサーバを使用する」を選択してください。次のようなページが表示されます: | ||
<br> | <br> | ||
::: [[Image:auth_ldap_config_screenshot.jpg]] | ::: [[Image:auth_ldap_config_screenshot.jpg]] | ||
40行目: | 38行目: | ||
! 入力値 | ! 入力値 | ||
|- | |- | ||
| | | ホストURL | ||
| あなたのLDAPサーバのIPアドレスが 192.168.1.100 の場合、'''ldap://192.168.1.100''' と入力してください。 | | あなたのLDAPサーバのIPアドレスが 192.168.1.100 の場合、'''ldap://192.168.1.100''' と入力してください。 | ||
|- | |- | ||
| バージョン | | バージョン | ||
| | | 本当に古いLDAPサーバを使用していない限り、バージョン '''3''' を選択してください。 | ||
|- | |- | ||
| LDAPエンコーディング | | LDAPエンコーディング | ||
52行目: | 50行目: | ||
[[LDAP認証#目次|目次]] | [[LDAP認証#目次|目次]] | ||
==== | ====バインド設定==== | ||
{| 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''' を入力してください (引用符なし)。 | ||
|} | |} | ||
[[LDAP認証#目次|目次]] | [[LDAP認証#目次|目次]] | ||
==== | ====ユーザルックアップ設定==== | ||
{| border="1" cellspacing="0" cellpadding="5" | {| border="1" cellspacing="0" cellpadding="5" | ||
! フィールド名 | ! フィールド名 | ||
79行目: | 77行目: | ||
* '''posixAccount (rfc2307)''' あなたのLDAPサーバが、RFC-2307準拠のLDAPサーバ (OpenLDAPサーバ) で稼動している場合、選択してください。 | * '''posixAccount (rfc2307)''' あなたのLDAPサーバが、RFC-2307準拠のLDAPサーバ (OpenLDAPサーバ) で稼動している場合、選択してください。 | ||
* '''posixAccount (rfc2307bis)''' あなたのLDAPサーバが、RFC-2307準拠のLDAPサーバで稼動している場合、選択してください。 | * '''posixAccount (rfc2307bis)''' あなたのLDAPサーバが、RFC-2307準拠のLDAPサーバで稼動している場合、選択してください。 | ||
* '''sambaSamAccount (v.3.0.7)''' あなたのLDAPサーバが、SAMBA 3.x | * '''sambaSamAccount (v.3.0.7)''' あなたのLDAPサーバが、SAMBA 3.x LDAPスキーマ拡張で稼動している場合、選択してください。 | ||
* '''MS ActiveDirectory''' あなたのLDAPサーバが、Microsoftアクティブディレクトリ (MS-AD) で稼動している場合、選択してください。 | * '''MS ActiveDirectory''' あなたのLDAPサーバが、Microsoftアクティブディレクトリ (MS-AD) で稼動している場合、選択してください。 | ||
|- | |- | ||
102行目: | 100行目: | ||
|- | |- | ||
| ユーザDNのメンバー属性 | | ユーザDNのメンバー属性 | ||
| メンバー属性がDN (識別名 Distinguished Name) | | メンバー属性がDN (識別名 Distinguished Name) を含む (1) か否 (0) か設定します。このオプションは、あなたが「ユーザタイプ」で選択した設定値を基にデフォルト値を取得します。<u>ですから、特別なことをすること以外、ここに値を入力する必要はありません。</u> | ||
|- | |- | ||
| オブジェクトクラス | | オブジェクトクラス | ||
124行目: | 122行目: | ||
|- | |- | ||
| パスワード変更の強制 | | パスワード変更の強制 | ||
| | | ユーザの初回Moodleログイン時、パスワードの変更を強制したい場合、「Yes」を設定してください。そうでない場合、「No」と設定してください。変更を強制されるパスワードは、あなたのLDAPサーバにあるパスワードであることに気をつけてください。 | ||
<u>最初のログインでユーザにパスワードを変更させたくない場合、この設定を「No」のままにしてください。</u> | <u>最初のログインでユーザにパスワードを変更させたくない場合、この設定を「No」のままにしてください。</u> | ||
140行目: | 138行目: | ||
| LDAPサーバへの送信時、新しいパスワードがどのように暗号化されるか指定してください: プレインテキスト、MD5暗号化、SHA-1暗号化。例えば、MS-ADではプレインテキストを使用します。 | | LDAPサーバへの送信時、新しいパスワードがどのように暗号化されるか指定してください: プレインテキスト、MD5暗号化、SHA-1暗号化。例えば、MS-ADではプレインテキストを使用します。 | ||
|- | |- | ||
| | | パスワード変更URL | ||
| ここでは、あなたのユーザがパスワードを忘れた場合、ユーザ名/パスワードを回復または変更するためのロケーションを設定します。これは、ログインページおよびユーザページにボタンとして提供されます。ここを空白にした場合、ボタンは表示されません。 | | ここでは、あなたのユーザがパスワードを忘れた場合、ユーザ名/パスワードを回復または変更するためのロケーションを設定します。これは、ログインページおよびユーザページにボタンとして提供されます。ここを空白にした場合、ボタンは表示されません。 | ||
|} | |} | ||
179行目: | 177行目: | ||
[[LDAP認証#目次|目次]] | [[LDAP認証#目次|目次]] | ||
====ユーザの作成==== | |||
{| border="1" cellspacing="0" cellpadding="5" | |||
! フィールド名 | |||
! 入力値 | |||
|- | |||
| 外部にユーザを作成する | |||
| 新しい (匿名) ユーザは、外部認証元のユーザアカウントを作成することができます。また、メールによりアカウント登録が確認されます。このオプションを有効にした場合、モジュール特有のオプションも同時に設定して、「サイト管理 > ユーザ > 認証 > 認証の管理」の''auth_instructions''にインストラクションを記述する必要があります。そうでない場合、新しいユーザは自分で新しいアカウントを作成できなくなります。 | |||
現在のところ、Novell eDirectoryおよびMS-ADのみ外部にユーザを作成することができます。 | |||
|- | |- | ||
| | | 新しいユーザのコンテクスト | ||
| | | ユーザ作成時のコンテクストを指定してください。セキュリティ問題を避けるため、このコンテクストは他のユーザコンテクストと異なるコンテクストを使用してください。 | ||
|} | |||
[[LDAP認証#目次|目次]] | |||
====コース作成者==== | |||
{| border="1" cellspacing="0" cellpadding="5" | |||
! フィールド名 | |||
! 入力値 | |||
|- | |- | ||
| | | コース作成者 | ||
| すべての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''' を使用してください)。 | | すべての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''' を使用してください)。 | ||
190行目: | 204行目: | ||
MSアクティブディレクトリでは、セキュリティグループを作成して、あなたのcreatorの一部に追加する必要があります。上記のLDAPコンテクストが 'ou=staff,dc=my,dc=org' の場合、あなたのグループでは 'cn=creators,ou=staff,dc=my,dc=org' に設定してください。ユーザの一部が他のコンテクストにあり、同じセキュリティグループに追加された場合、同じフォーマットを使用して、これらを分離したコンテクストとして最初のコンテクストの次に追加する必要があります。 | MSアクティブディレクトリでは、セキュリティグループを作成して、あなたのcreatorの一部に追加する必要があります。上記のLDAPコンテクストが 'ou=staff,dc=my,dc=org' の場合、あなたのグループでは 'cn=creators,ou=staff,dc=my,dc=org' に設定してください。ユーザの一部が他のコンテクストにあり、同じセキュリティグループに追加された場合、同じフォーマットを使用して、これらを分離したコンテクストとして最初のコンテクストの次に追加する必要があります。 | ||
|} | |||
[[LDAP認証#目次|目次]] | |||
====Cron同期化スクリプト ==== | |||
{| border="1" cellspacing="0" cellpadding="5" | |||
! フィールド名 | |||
! 入力値 | |||
|- | |||
| 削除された外部ユーザ | |||
| 外部ソースからユーザが削除された場合、大量同期化時にどのように内部ユーザを処理するか指定してください。外部ソースのユーザが回復された場合、一時停止ユーザのみ自動的に回復されます。 | |||
|} | |||
[[LDAP認証#目次|目次]] | |||
====NTLM SSO==== | |||
{| border="1" cellspacing="0" cellpadding="5" | |||
! フィールド名 | |||
! 入力値 | |||
|- | |||
| 有効 | |||
| あなたがNTLM SSO (詳細は、[[NTLM認証]]をご覧ください) を使用したい場合、ここで「Yes」を選択してください。そうでない場合、「No」を選択してください。 | |||
|- | |||
| サブネット | |||
| NTLM SSOを使用するクライアントのサブネットを指定してください (詳細は、[[NTLM認証]]をご覧ください)。 | |||
|} | |||
[[LDAP認証#目次|目次]] | |||
====データマッピング==== | |||
{| border="1" cellspacing="0" cellpadding="5" | |||
! フィールド名 | |||
! 入力値 | |||
|- | |- | ||
| | | 名 | ||
| この属性は、LDAPサーバのユーザの名を持ちます。通常、'''givenName''' です。 | | この属性は、LDAPサーバのユーザの名を持ちます。通常、'''givenName''' です。 | ||
<u>この設定は任意です。</u> | <u>この設定は任意です。</u> | ||
|- | |- | ||
| | | 姓 | ||
| この属性は、LDAPサーバのユーザの姓を持ちます。通常、'''sn''' です。 | | この属性は、LDAPサーバのユーザの姓を持ちます。通常、'''sn''' です。 | ||
<u>この設定は任意です。</u> | <u>この設定は任意です。</u> | ||
|- | |- | ||
| | | メールアドレス | ||
| この属性は、LDAPサーバのユーザのメールアドレスを持ちます。通常、'''mail''' です。 | | この属性は、LDAPサーバのユーザのメールアドレスを持ちます。通常、'''mail''' です。| Email address | ||
<u>この設定は任意です。</u> | <u>この設定は任意です。</u> | ||
|- | |- | ||
| | | 都道府県 | ||
| | | この属性の名称は、あなたのLDAPサーバで、ユーザの所在地住所 (市/町) を保持します。これは通常、'''l''' (小文字のL) または '''localityName''' (MS-ADでは有効ではありません) です。 | ||
<u>この設定は任意です。</u> | |||
|- | |||
| 国 | |||
| この属性の名称は、あなたのLDAPサーバで、ユーザの所在地住所 (国) を保持します。これは通常、'''c''' または '''countryName''' (MS-ADでは有効ではありません) です。 | |||
<u>この設定は任意です。</u> | <u>この設定は任意です。</u> | ||
|- | |- | ||
| | | 言語設定 | ||
| | | '''preferredLanguage''' | ||
<u>この設定は任意です。</u> | <u>この設定は任意です。</u> | ||
|- | |- | ||
| | | 説明 | ||
| | | '''description''' | ||
<u>この設定は任意です。</u> | <u>この設定は任意です。</u> | ||
|- | |- | ||
| | | ウェブページ | ||
| | | | ||
<u>この設定は任意です。</u> | <u>この設定は任意です。</u> | ||
|- | |- | ||
| | | IDナンバー | ||
| | | | ||
<u>この設定は任意です。</u> | <u>この設定は任意です。</u> | ||
|- | |- | ||
| | | 所属組織 | ||
| | | | ||
<u>この設定は任意です。</u> | <u>この設定は任意です。</u> | ||
|- | |- | ||
| | | 部署 | ||
| ''' | | この属性は、LDAPサーバのユーザの学部または学科名を持ちます。これは通常、'''departmentNumber'''(posixAccountおよび恐らくeDirectory) または '''department''' (MS-AD) です。 | ||
<u>この設定は任意です。</u> | <u>この設定は任意です。</u> | ||
|- | |- | ||
| | | 電話1 | ||
| | | この属性は、LDAPサーバのユーザの電話番号を持ちます。通常、'''telephoneNumber''' です。 | ||
<u>この設定は任意です。</u> | <u>この設定は任意です。</u> | ||
|- | |- | ||
| | | 電話2 | ||
| ''' | | この属性は、LDAPサーバのユーザの追加の電話番号を持ちます。'''homePhone'''、'''mobile'''、'''pager'''、'''facsimileTelephoneNumber''' または他の名称を使用できます。 | ||
<u>この設定は任意です。</u> | <u>この設定は任意です。</u> | ||
|- | |- | ||
| | | 住所 | ||
| | | この属性の名称は、あなたのLDAPサーバでユーザの所在地住所 (番地) を保持します。これは通常、'''streetAddress''' または '''street'''' です。 | ||
<u>この設定は任意です。</u> | |||
|} | |} | ||
[[LDAP認証#目次|目次]] | |||
===cronを使用した定期的な自動同期化を設定する=== | |||
すべてのLDAPアカウントを自動的に作成中/一時停止/削除 (上記の設定を参照) することのできるスクリプトが /auth/ldap/auth_ldap_sync_users.php にあります。理想的には、このスクリプトは、標準的な[[cron]]ジョブと全く同じ手順で、1日1回静かな時間にコールされるべきです (ですから、あなたは2つのcronエントリを持つことになります)。しかし、あなたがこのスクリプトを試す前に、上記すべてのLDAP設定が正常に動作することを確認してください。同様にあなたのデータベースおよびmoodledataフォルダをバックアップしてください。正しくないLDAP設定により、ユーザが間違って削除されてしまうことがあります。 | |||
あなたのすべてのユーザに対して、このスクリプトが適切に動作するわけではない場合、そしてあなたのMSアクティブディレクトリが1000名を超えるユーザを持っている場合、1度にMS ADが1000ユーザのみセンドバックすることが原因です。修正するには、[http://support.microsoft.com/kb/315071 このインストラクション]に従って、あなたの合計ユーザ数より多い値をMaxPageSizeに設定してください。 | |||
[[LDAP認証#目次|目次]] | |||
==Active Directoryヘルプ== | |||
[[Active Directory]]は、Microsoftのディレクトリサービスです。Windows2000サーバおよびそれ以降のバージョンのオペレーティングシステムに含まれています。下記内容に関する詳細は、'''[[Active Directory|こちらをご覧ください]]'''。 | |||
*警告: PHP LDAPモジュールがインストールされていないようです。 | |||
*LDAPモジュールからLDAPサーバに接続できません。 | |||
*ContextおよびCreatorのCNに接続する。 | |||
*正しいuser_attributeを取得する。 | |||
*ldp.exeサーバツールをインストールする。 | |||
*Active Directory設定例 | |||
*MS Active Directoryの子ドメインおよびグローバルカタログ | |||
*グローバルカタログを有効にする。 | |||
*Moodle 1.8でActive Directoryを使用する。 | |||
*MS Active Directory + SSL | |||
[[LDAP認証#目次|目次]] | |||
==高度なシナリオ== | ==高度なシナリオ== | ||
複数のLDAPサーバを持つ大規模インストール、またはLDAPツリー内の複合ロケーション (コンテクスト) 用です。 | |||
===複数のLDAPサーバを使用する=== | ===複数のLDAPサーバを使用する=== | ||
265行目: | 341行目: | ||
ldap://my.first.server ; ldap://my.second.server ; ... | ldap://my.first.server ; ldap://my.second.server ; ... | ||
もちろん、これはすべてのサーバがディレクトリ情報を共有し、複製または同期メカニズムがeDirectoryに導入され、メインのLDAP互換ディレクトリが一般化されている場合に動作します。 | |||
Moodle 1.5 - 1.6に実装されているLDAP認証には1つの欠陥があります: auth_ldap_connect() 関数は、サーバをラウンドロビンモードでは処理せず、連続的に処理します。このため、プライマリサーバが停止した場合、次のサーバに切り替わるまでコネクションのタイムアウトを待つ必要があります。 | Moodle 1.5 - 1.6に実装されているLDAP認証には1つの欠陥があります: auth_ldap_connect() 関数は、サーバをラウンドロビンモードでは処理せず、連続的に処理します。このため、プライマリサーバが停止した場合、次のサーバに切り替わるまでコネクションのタイムアウトを待つ必要があります。 | ||
275行目: | 351行目: | ||
次に、代わりの方法です : | 次に、代わりの方法です : | ||
* | * '''o=myorg''' レベルを確認して、「サブコンテクストを検索する」属性で '''yes''' を設定してください。 | ||
* | * 「コンテクスト」に '''ou=students,ou=dept1,o=myorg ; ou=students,ou=dept2,o=myorg''' を設定してください。 | ||
2つのソリューションのどちらを選ぶかは、あなたのディレクトリツリーおよびLDAPソフトウェアのインデックス能力のベンチマークに大きく依存します。そのような深いツリーには、異なる識別名を持ちながら、同じ一般名 (cn) を共有する可能性があることに注意してください。この場合、結果として (常に同じユーザを返す) 2番目のソリューションを選ぶ必要があります。 | 2つのソリューションのどちらを選ぶかは、あなたのディレクトリツリーおよびLDAPソフトウェアのインデックス能力のベンチマークに大きく依存します。そのような深いツリーには、異なる識別名を持ちながら、同じ一般名 (cn) を共有する可能性があることに注意してください。この場合、結果として (常に同じユーザを返す) 2番目のソリューションを選ぶ必要があります。 | ||
===LDAPS (LDAP + SSL) を使用する=== | ===LDAPS (LDAP + SSL) を使用する=== | ||
==== | ====サーバサイトでLDAPSを有効にする==== | ||
* [[Active_Directory#MS_Active_Directory_.2B_SSL|MS Active DirectoryでLDAPSを有効にする]] | |||
====クライアントサイド (Moodleサーバ) でLDAPSを有効にする==== | |||
* あなたがMS WindowsでMoodleを運用している場合、PHPのOpenLDAP拡張モジュールにSSLサーバ証明書のチェックを無効にするよう伝える必要があります。''C:\OpenLDAP\sysconf''というディレクトリ名のディレクトリを作成してください。このディレクトリ内で、下記コンテンツを記述した''ldap.conf''というファイルを作成してください: | |||
TLS_REQCERT never | |||
* あなたがLinuxまたは他のUnix-likeのオペレーティングシステムでMoodleを動作させている場合、そして、SSLサーバ証明書チェックを無効にしたい場合、OpenLDAPクライアント設定ファイル (通常、/etc/ldap.conf または /etc/ldap/ldap.conf または even /etc/openldap/ldap.conf) を編集して、下記のような行が記述されていることを確認してください: | |||
TLS_REQCERT never | |||
そして、あなたのLDAPサーバへの接続時、'''ldaps://''' を使用できるようになります。 | |||
[[LDAP認証#目次|目次]] | |||
==付録== | ==付録== |
2016年1月20日 (水) 07:21時点における最新版
Moodle 1.9
ロケーション: サイト管理 > ユーザ > 認証 > LDAPサーバ の設定リンク
このドキュメントには、MoodleのLDAP (Lightweight Directory Access Protocol) 認証をセットアップする方法を記述します。MoodleにおけるLDAPのインストールおよび管理に関してユーザをサポートするため、基本設定、高度な設定およびトラブルシューティングに関して説明します。
目次
基本シナリオ
前提条件
- あなたのMoodleサイトは、http://your.moodle.site/ にあります。
- あなたの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です。
- あなたは、ユーザの初回ログイン時、パスワードを変更させたくありません。
- MS-ADを使用している場合、あなたは認証データのソースとしてシングルドメインを使用しています (詳細は付録をご覧ください)。
- あなたは、LDAPツリーのルートとして、トップレベル識別名 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 を持ちます。
- あなたのすべてのMoodleユーザは、root直下にある moodleusers と呼ばれるOU (組織単位 organizational unit) に入ります。このOUは、DN (識別名 Distinguished Name) ou=moodleusers,dc=my,dc=organization,dc=domain を持ちます。
- あなたは、LDAPユーザのパスワードをMoodleに保存したくありません。
Moodle認証の設定
管理者としてログインして、管理 > ユーザ > 認証オプション へ移動してください。「認証方法の選択」リストボックスで、「LDAPサーバを使用する」を選択してください。次のようなページが表示されます:
さて、値を入力する必要があります。一歩一歩進みましょう。
LDAPサーバ設定
フィールド名 | 入力値 |
---|---|
ホストURL | あなたのLDAPサーバのIPアドレスが 192.168.1.100 の場合、ldap://192.168.1.100 と入力してください。 |
バージョン | 本当に古いLDAPサーバを使用していない限り、バージョン 3 を選択してください。 |
LDAPエンコーディング | LDAPサーバで使用するエンコーディングを指定してください。多くの場合、UTF-8です。 |
バインド設定
フィールド名 | 入力値 |
---|---|
パスワードを秘密にする | あなたがMoodleデータベースにユーザパスワードを保存したくない場合、「Yes」を選択してください。 |
識別名 | 上記で定義されたバインドユーザの識別名です。cn=ldap-user,dc=my,dc=organization,dc=domain を入力してください (引用符なし)。 |
パスワード | 上記で定義されたバインドユーザのパスワードです。hardtoguesspassword を入力してください (引用符なし)。 |
ユーザルックアップ設定
フィールド名 | 入力値 |
---|---|
ユーザタイプ | 選択:
|
コンテクスト | あなたのすべてのMoodleユーザは、コンテクスト (コンテナ) のDN (識別名 Distinguished Name) で探されます。ここでは、ou=moodleusers,dc=my,dc=organization,dc=domain と入力してください。 |
サブコンテクストを検索する | ou=moodleusers,dc=my,dc=organization,dc=domain 配下にサブ組織単位 (sub organizational unit サブコンテクスト) があり、あなたがMoodleにサブ組織単位を検索して欲しい場合、「Yes」を選択してください。そうでない場合、「No」を選択してください。 |
エリアスの修飾参照 | しばしば、LDAPサーバはあなたが探している真の値が他のLDAPツリーにあると伝えるでしょう (これはエイリアスと呼ばれます)。あなたがMoodleに修飾参照を求めて、真の値をオリジナルロケーションから取得したい場合、「Yes」を選択してください。Moodleに修飾参照を求めない場合、「No」を選択してください。あなたが、MS-ADを使用している場合、「No」を選択してください。 |
ユーザ属性 | この属性は、あなたの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 ログオンアカウント名) を使用することもできます。 |
メンバー属性 | グループのメンバ一覧を表示するために使用される属性です。このオプションは、上記で選択したldap_user_type 値をデフォルトとして持ちます。ですから、特別なことをすること以外、ここに値を入力する必要はありません。
通常の値は、member および memberUid です。 |
ユーザDNのメンバー属性 | メンバー属性がDN (識別名 Distinguished Name) を含む (1) か否 (0) か設定します。このオプションは、あなたが「ユーザタイプ」で選択した設定値を基にデフォルト値を取得します。ですから、特別なことをすること以外、ここに値を入力する必要はありません。 |
オブジェクトクラス | ユーザ検索に使用されるLDAPオブジェクトのタイプです。このオプションは、あなたが「ユーザタイプ」で選択した設定値を基にデフォルト値を取得します。ですから、特別なことをすること以外、ここに値を入力する必要はありません。
下記は、ldap_user_type のデフォルト値です:
あなたが変更内容をLDAPサーバに戻さないという設定をしているにもかかわらず、LDAPサーバの更新でエラーが発生する場合、LDAPオブジェクトクラスを「*」に設定することをお試しください - 詳細は、この問題に関するディスカッション http://moodle.org/mod/forum/discuss.php?d=70566 をご覧ください。 |
パスワード変更の強制
フィールド名 | 入力値 |
---|---|
パスワード変更の強制 | ユーザの初回Moodleログイン時、パスワードの変更を強制したい場合、「Yes」を設定してください。そうでない場合、「No」と設定してください。変更を強制されるパスワードは、あなたのLDAPサーバにあるパスワードであることに気をつけてください。
最初のログインでユーザにパスワードを変更させたくない場合、この設定を「No」のままにしてください。 |
標準パスワード変更ページを使用する |
MoodleからLDAPパスワードを変更するには、LDAPS接続が必要であることに注意してください (少なくともMS-ADでは、正しいと思います)。 また、Novell eDirectory以外は、Moodleからパスワードを変更するコードは、ほとんどテストされていません。ですから、他のLDAPサーバでの動作は保証されません。 |
パスワードフォーマット | LDAPサーバへの送信時、新しいパスワードがどのように暗号化されるか指定してください: プレインテキスト、MD5暗号化、SHA-1暗号化。例えば、MS-ADではプレインテキストを使用します。 |
パスワード変更URL | ここでは、あなたのユーザがパスワードを忘れた場合、ユーザ名/パスワードを回復または変更するためのロケーションを設定します。これは、ログインページおよびユーザページにボタンとして提供されます。ここを空白にした場合、ボタンは表示されません。 |
LDAPパスワード有効期限設定
フィールド名 | 入力値 |
---|---|
有効期限切れ |
現在のコードでは、Novell eDirectory LDAPサーバのみ扱うことができます。しかし、MS-ADでも動作するようにできるパッチがあちこちに投稿されています (authenticationを参照)。 ですから、あなたがNovell eDirectoryサーバを使用している (またはパッチを使用している) 以外、ここでは「No」を選択してください。 |
有効期限切れを警告 | この属性では、パスワード有効期限切れの何日前に、ユーザにパスワード有効期限が警告されるか設定します。 |
有効期限切れ属性 | この属性は、パスワードの有効期限をチェックするために使用されます。このオプションは、あなたが上記で選択した ldap_user_type の値から初期値を取得します。ですから、特別なことをすること以外、ここに値を入力する必要はありません。 |
猶予ログイン | ここでは、Novell eDirectory特有の設定を行います。「Yes」に設定した場合、LDAPグレースログインをサポートします。パスワードの有効期限が切れた後、ユーザは猶予カウントがゼロになるまでログインできます。
ですから、あなたがNovell eDirectoryを使用して猶予ログインをサポートしない場合、ここでは「No」を選択してください。 |
猶予ログイン属性 | 現在、この設定はコードで使用されていません (Novell eDirectory特有の設定です)。
ですから、ここに値を入力する必要はありません。 |
ユーザの作成
フィールド名 | 入力値 |
---|---|
外部にユーザを作成する | 新しい (匿名) ユーザは、外部認証元のユーザアカウントを作成することができます。また、メールによりアカウント登録が確認されます。このオプションを有効にした場合、モジュール特有のオプションも同時に設定して、「サイト管理 > ユーザ > 認証 > 認証の管理」のauth_instructionsにインストラクションを記述する必要があります。そうでない場合、新しいユーザは自分で新しいアカウントを作成できなくなります。
現在のところ、Novell eDirectoryおよびMS-ADのみ外部にユーザを作成することができます。 |
新しいユーザのコンテクスト | ユーザ作成時のコンテクストを指定してください。セキュリティ問題を避けるため、このコンテクストは他のユーザコンテクストと異なるコンテクストを使用してください。 |
コース作成者
フィールド名 | 入力値 |
---|---|
コース作成者 | すべての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 を使用してください)。
eDirectoryでは、グループのオブジェクトクラスは (デフォルトで) posixGroup ではありませんが、メンバー属性は memberUid, ではなく member, です。また、メンバー属性の値は、当該ユーザのフルDNとなります。このフィールドを使用できるようMoodleのコードを修正することもできますが、より良いソリューションは、新しい posixGroup の objectClass 属性をあなたのcreatorグループに追加し、それぞれのcreatorグループの memberUid 属性にCNにを設定することです。 MSアクティブディレクトリでは、セキュリティグループを作成して、あなたのcreatorの一部に追加する必要があります。上記のLDAPコンテクストが 'ou=staff,dc=my,dc=org' の場合、あなたのグループでは 'cn=creators,ou=staff,dc=my,dc=org' に設定してください。ユーザの一部が他のコンテクストにあり、同じセキュリティグループに追加された場合、同じフォーマットを使用して、これらを分離したコンテクストとして最初のコンテクストの次に追加する必要があります。 |
Cron同期化スクリプト
フィールド名 | 入力値 |
---|---|
削除された外部ユーザ | 外部ソースからユーザが削除された場合、大量同期化時にどのように内部ユーザを処理するか指定してください。外部ソースのユーザが回復された場合、一時停止ユーザのみ自動的に回復されます。 |
NTLM SSO
フィールド名 | 入力値 |
---|---|
有効 | あなたがNTLM SSO (詳細は、NTLM認証をご覧ください) を使用したい場合、ここで「Yes」を選択してください。そうでない場合、「No」を選択してください。 |
サブネット | NTLM SSOを使用するクライアントのサブネットを指定してください (詳細は、NTLM認証をご覧ください)。 |
データマッピング
フィールド名 | 入力値 |
---|---|
名 | この属性は、LDAPサーバのユーザの名を持ちます。通常、givenName です。
この設定は任意です。 |
姓 | この属性は、LDAPサーバのユーザの姓を持ちます。通常、sn です。
この設定は任意です。 |
メールアドレス | Email address
この設定は任意です。 |
都道府県 | この属性の名称は、あなたの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サーバのユーザの追加の電話番号を持ちます。homePhone、mobile、pager、facsimileTelephoneNumber または他の名称を使用できます。
この設定は任意です。 |
住所 | この属性の名称は、あなたのLDAPサーバでユーザの所在地住所 (番地) を保持します。これは通常、streetAddress または street' です。
この設定は任意です。 |
cronを使用した定期的な自動同期化を設定する
すべてのLDAPアカウントを自動的に作成中/一時停止/削除 (上記の設定を参照) することのできるスクリプトが /auth/ldap/auth_ldap_sync_users.php にあります。理想的には、このスクリプトは、標準的なcronジョブと全く同じ手順で、1日1回静かな時間にコールされるべきです (ですから、あなたは2つのcronエントリを持つことになります)。しかし、あなたがこのスクリプトを試す前に、上記すべてのLDAP設定が正常に動作することを確認してください。同様にあなたのデータベースおよびmoodledataフォルダをバックアップしてください。正しくないLDAP設定により、ユーザが間違って削除されてしまうことがあります。
あなたのすべてのユーザに対して、このスクリプトが適切に動作するわけではない場合、そしてあなたのMSアクティブディレクトリが1000名を超えるユーザを持っている場合、1度にMS ADが1000ユーザのみセンドバックすることが原因です。修正するには、このインストラクションに従って、あなたの合計ユーザ数より多い値をMaxPageSizeに設定してください。
Active Directoryヘルプ
Active Directoryは、Microsoftのディレクトリサービスです。Windows2000サーバおよびそれ以降のバージョンのオペレーティングシステムに含まれています。下記内容に関する詳細は、こちらをご覧ください。
- 警告: PHP LDAPモジュールがインストールされていないようです。
- LDAPモジュールからLDAPサーバに接続できません。
- ContextおよびCreatorのCNに接続する。
- 正しいuser_attributeを取得する。
- ldp.exeサーバツールをインストールする。
- Active Directory設定例
- MS Active Directoryの子ドメインおよびグローバルカタログ
- グローバルカタログを有効にする。
- Moodle 1.8でActive Directoryを使用する。
- MS Active Directory + SSL
高度なシナリオ
複数のLDAPサーバを持つ大規模インストール、またはLDAPツリー内の複合ロケーション (コンテクスト) 用です。
複数のLDAPサーバを使用する
複数のldap_host_urlフィールドを作成することで、あなたのシステムに弾性を与えることができます。単に下記のシンタックスを使用してください:
ldap://my.first.server ; ldap://my.second.server ; ...
もちろん、これはすべてのサーバがディレクトリ情報を共有し、複製または同期メカニズムがeDirectoryに導入され、メインのLDAP互換ディレクトリが一般化されている場合に動作します。
Moodle 1.5 - 1.6に実装されているLDAP認証には1つの欠陥があります: auth_ldap_connect() 関数は、サーバをラウンドロビンモードでは処理せず、連続的に処理します。このため、プライマリサーバが停止した場合、次のサーバに切り替わるまでコネクションのタイムアウトを待つ必要があります。
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 のようなコンテナに保存することができます。
次に、代わりの方法です :
- o=myorg レベルを確認して、「サブコンテクストを検索する」属性で yes を設定してください。
- 「コンテクスト」に ou=students,ou=dept1,o=myorg ; ou=students,ou=dept2,o=myorg を設定してください。
2つのソリューションのどちらを選ぶかは、あなたのディレクトリツリーおよびLDAPソフトウェアのインデックス能力のベンチマークに大きく依存します。そのような深いツリーには、異なる識別名を持ちながら、同じ一般名 (cn) を共有する可能性があることに注意してください。この場合、結果として (常に同じユーザを返す) 2番目のソリューションを選ぶ必要があります。
LDAPS (LDAP + SSL) を使用する
サーバサイトでLDAPSを有効にする
クライアントサイド (Moodleサーバ) でLDAPSを有効にする
- あなたがMS WindowsでMoodleを運用している場合、PHPのOpenLDAP拡張モジュールにSSLサーバ証明書のチェックを無効にするよう伝える必要があります。C:\OpenLDAP\sysconfというディレクトリ名のディレクトリを作成してください。このディレクトリ内で、下記コンテンツを記述したldap.confというファイルを作成してください:
TLS_REQCERT never
- あなたがLinuxまたは他のUnix-likeのオペレーティングシステムでMoodleを動作させている場合、そして、SSLサーバ証明書チェックを無効にしたい場合、OpenLDAPクライアント設定ファイル (通常、/etc/ldap.conf または /etc/ldap/ldap.conf または even /etc/openldap/ldap.conf) を編集して、下記のような行が記述されていることを確認してください:
TLS_REQCERT never
そして、あなたのLDAPサーバへの接続時、ldaps:// を使用できるようになります。
付録
MSアクティブディレクトリの子ドメインおよびグローバルカタログ
現在、Moodleでは複数ドメインコントローラのサポートのみに限定されています。特にそれぞれのLDAPサーバは同一の情報を含んでドメインコントローラリスト上にある必要があります。あなたが複数のドメインにユーザを持っている場合、これが問題となります。1つの解決方法は、MS-ADと連携するときにグローバルカタログを使用することです。グローバルカタログはリードオンリー、MS-ADフォレストを部分的に表示するために、またオブジェクトのディレクトリが見つからないときにディレクトリ全体を検索するために設計されています。
例えば、あなたの属している組織が「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の認証設定と同じです。
個々のロケーションにアクセス権限を与えたい場合、「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」にしてください。
Microsoftから提供される部分的な属性セットとして、グローバルカタログがそれぞれのオブジェクト属性の部分的な表現のみ含んでいることは注目に値します。しかし、一般的なMoodleインストールで使用される通常の情報 (姓、名、メールアドレス、sAMAccountName等) がセットの中に含まれています。特定の利用に対して、スキーマの様々な属性を削除または追加することができます。
ほとんどの場合、グローバルカタログはリードオンリーです。標準のLDAPポートを通して、問題になっているオブジェクトを保持しているドメインコントローラのクエリーを更新する必要があります (私たちの例では、学生の詳細を更新するには、students.example.orgのドメインコントローラ (dc03) に対するLDAPクエリーが必要です。グローバルカタログのクエリーで更新することはできません)。例外は、これがアクティブディレクトリフォレストのシングルドメインのみにある環境です。この場合、グローバルカタログはドメイン内のそれぞれのオブジェクト属性のフルセットに対する書込み権を保有します。しかし、Moodle認証では、この場合のグローバルカタログを使用する必要はありません。
グローバルカタログを有効にする
グローバルカタログは、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) を使用している場合、グローバルカタログにアクセスすることもできます。
ldap auth_user_create() は、Novellのみサポートする
ユーザ認証をLDAPに設定した後で、私は気付きました。メールによるユーザ確認と組み合わせた場合、LDAPはedit (Novell) のみサポートするようです。例えば私の場合 (openladapを使用)、ユーザフォーム入力時に下記のエラーが表示されます:
auth: ldap auth_user_create() does not support selected usertype:"rfc2307" (..yet)
関連情報
- Using Moodle ユーザ認証j フォーラム - 英語
- Using Moodle PHP LDAPモジュールがインストールされていないようです フォーラムディスカッション - 英語
- LDAPユーザ登録