Mitsuhiro Yoshida様
「Moodleのサービスの再起動」「他の設定の変更」ともに不要とのことで承知致しました。
おそらく、認証のLDAPの設定で誤っているところがあると思われます。
担当者に設定項目を確認しなおしてみようと思います。
ありがとうございました。
いつもお世話になっております。3か月前からいろいろと調べているのですが、まだ解決しておりません。
「LDAPサーバ設定」の「ホストURL」がどうやら誤っているようです。
ADサーバは、Windowsサーバです。ldap://ldap.xxxx.local ※xxxx.localは、会社のドメイン名です。
「LDAPプロトコルのバージョン」を2にしても3にしても下記のメッセージが表示されます。
「LDAPページ化結果はサポートされていません (あなたのPHPバージョンがサポートしていないか、MoodleがLDAPプロトコルバージョン2を使用するよう設定されているか、ページサポートを利用できるか確認するためにMoodleがLDAPサーバに接続できません)。 」と表示される。
試しに、ldap://xxxxAD01.towa.local を指定したら、上記のメッセージは表示されないのですが、自分のADアカウントでログインしようとすると「Internal Error」と表示されます。
※xxxxAD01.towa.localは、会社のADサーバ名です。nslookup 172.16.1.xxで検索すると表示されたものになります。
「LDAPサーバ設定」の「ホストURL」は、どのように調べればよいですか?また「LDAPプロトコルのバージョン」を調べる方法を教えて頂けませんでしょうか。
> 「LDAPサーバ設定」の「ホストURL」は、どのように調べればよいですか?
以下のコマンドで取得できませんでしょうか。
nslookup -type=srv _ldap._tcp.DOMAINNAME
参考資料:
[domain name system - How can I find the LDAP server in the DNS on Windows? - Server Fault]
https://serverfault.com/questions/153526/how-can-i-find-the-ldap-server-in-the-dns-on-windows
> また「LDAPプロトコルのバージョン」を調べる方法を教えて頂けませんでしょうか。
Windows PowerShellで以下のコマンドを実行して確認できるようです。
Get-ADRootDSE -Server domainfqdn
参考資料:
[How to check LDAP version on domain controller - Microsoft TechNet]
https://social.technet.microsoft.com/Forums/en-US/26fc6136-074c-45b0-91a7-2b5fc85ec683/how-to-check-ldap-version-on-domain-controller?forum=winserverDS
Mitsuhiro Yoshida様
ご回答ありがとうございます。
教えて頂いた情報で、「LDAPサーバ設定」の「ホストURL」と「LDAPプロトコルのバージョン」を知ることができました。
Moodleのエラーメッセージが下記のように変わりました。
↓↓
「この方法では外部のLDAPサーバに対して認証を提供します。ユーザ名およびパスワードが正しい場合、Moodleは新しいユーザをデータベースに作成します。このモジュールはユーザ属性をLDAPから取得して、Moodleのフィールドに入力します。認証後のログインではユーザ名およびパスワードのみ確認されます。」
しかし、まだADアカウントユーザでログインしようとすると、「不正なログインです。再度ログインしてください。」と表示されます。
バインドの設定とユーザルックアップ設定の内容が不足しているのでしょうか?
何度も申し訳ございません。
以上、よろしくお願い致します。
よろしければ、以下の設定例を参考に現在の設定内容を再度ご確認ください。
■ LDAPサーバ設定
ホストURL:
ldap://123.123.123.123/
バージョン:
3
TLSを使用する:
No
LDAPエンコーディング:
utf-8
ページサイズ:
250
■ バインド設定
パスワードをキャッシュしない:
Yes
識別名:
cn=replica,dc=moodle,dc=our-company,dc=co,dc=jp
パスワード:
6~HA\e3C}w
■ ユーザルックアップ設定
ユーザタイプ:
postfixAccount (rfc2307)
コンテクスト:
ou=users,dc=moodle,dc=our-company,dc=co,dc=jp
サブコンテクストを検索する:
No
エイリアスの修飾参照:
No
■ パスワード変更を強制する
パスワード変更を強制する:
No
パスワード変更に標準ページを使用する:
No
パスワードフォーマット:
プレインテキスト
パスワード変更URL:
http://www.our-company.co.jp/password.html
■ データマッピング
名 = givenName
姓 = sn
メールアドレス = mail
所属 = description
Mitsuhiro Yoshida様
ご回答ありがとうございます。
ADは、Windowsサーバのため、MS Active Directoryを指定しています。
ユーザが入っているouの名前に漢字が入っていたりするのでダメなのでしょうか?
下記のように設定しましたが、「不正なログインです。再度ログインしてください。」と表示されてしまいます。
試しに■ LDAPサーバ設定をcp1252、cp1250に変えてみましたが同じメッセージが表示されてしまいます。
☆設定
ホストURL: XXXX-AD01.xxxx.local
※XXXX, xxxxは弊社会社名が入っています。
バージョン: 3
TLSを使用する: No
LDAPエンコーディング: utf-8
ページサイズ: 250
■ バインド設定
パスワードをキャッシュしない: Yes
識別名: CN=Administrator,CN=Users,DC=xxxx,DC=local
※xxxxは弊社会社名が入っています。
パスワード:
※ADサーバの管理者アカウントのパスワードを指定
■ ユーザルックアップ設定 ユーザタイプ: MS ActiveDirectory
コンテクスト: ou=users,ou=情報システム部,ou=towa,ou=xxxxgroup,dc=xxxx,dc=local
※xxxxは弊社会社名が入っています。
サブコンテクストを検索する: No
エイリアスの修飾参照: No
■ パスワード変更を強制する
パスワード変更を強制する: No
パスワード変更に標準ページを使用する: No
パスワードフォーマット: プレインテキスト
パスワード変更URL: ※空欄のまま
■ データマッピング
名 = givenName
姓 = sn メールアドレス = mail
所属 = description
> ユーザが入っているouの名前に漢字が入っていたりするのでダメなのでしょうか?
全く問題がないとは明言できませんが、恐らく、大丈夫だと思います。
参考資料:
[日本語のオブジェクト名 - Microsoft TechNET]
https://social.technet.microsoft.com/Forums/windowsserver/ja-JP/247eaef3-7f93-4929-9805-388da7d70ae6/2608526412354861239812458125021247212455124631248821517?forum=activedirectoryja
[Active Directoryのオブジェクト名に日本語を使うか? - 徒然なるままに]
http://norimaki2000.blog48.fc2.com/blog-entry-346.html
すでにご覧になったかもしれませんが、念のため、udagawa mitsuruさんの下記投稿をご覧ください。今回の問題解決のヒントになるかと思います。
[Japanese Moodle: ActiveDirectoryと上手く連携出来ず、ログイン出来ません。]
https://moodle.org/mod/forum/discuss.php?d=317964#p1275373
Mitsuhiro Yoshida様
ご回答ありがとうございます。
「管理 > サイト管理 > プラグイン > 認証 > LDAPサーバ」ページの「ユーザルックアップ設定」セクション内にある「ユーザ属性」に「sAMAccountName」を入れることで ユーザログオン名でログインできるようになりました。
>サイト管理>>拡張機能>>プラグイン>>認証>>認証管理 >の共通設定の「ユーザ認証時のアカウント作成を抑制する」の
>チェックを外すことでログイン出来るようになりました。
>
ここの設定は、元からチェックが外れておりました。 追加の質問があります。 何度も本当に申し訳御座いません。
「所属組織 」の情報をADから引っ張ってきたいのですが、パラメータは、「institution」では無理なのでしょうか? 試しに入れたのですが、所属組織が空欄のままでした。 ※ADで言うところの「会社名」をMoodleの「所属組織」に入れたいと考えています。
以上、ご確認よろしくお願い致します。
> AD認証のアカウントは、各ユーザがログインするまではMoodleのサーバ上にアカウントは作成されないのでしょうか?
はい、そうです。
認証方法を指定したCSVファイルを使ってユーザを一括アップロードすることは可能です。
よろしければ、テスト環境で下記手順をお試しください。
※1 ユーザアップロード用CSVファイルの記述例:
username,auth,firstname,lastname,email,lang,course1
ldap001,ldap,first001,last001,ldap001@moodle.org,ja,TD001
ldap002,ldap,first002,last002,ldap002@moodle.org,ja,TD001
ldap003,ldap,first003,last003,ldap003@moodle.org,ja,TD001
ldap004,ldap,first004,last004,ldap004@moodle.org,ja,TD001
ldap005,ldap,first005,last005,ldap005@moodle.org,ja,TD001
認証方法のみを記述したCSVファイルを作成して、既存のユーザの認証方法をLDAPに一括変更されてはいかがでしょうか。
CSVファイルを使用したユーザの認証方法変更手順は以下のとおりです。
※1 ユーザ認証方法変更用CSVファイルの記述例:
username,auth
user001,ldap
user002,ldap
user003,ldap
Mitsuhiro Yoshida様
ご回答ありがとうございます。
ご回答頂いたのに申し訳ございません。
弊社には社員に対して2種類の社員番号があります。 "数字6桁"と"アルファ2文字+数字6桁"です。既存の手動は、"数字6桁"で手動登録されていますが、これから登録しようとしているADアカウントは、"アルファ2文字+数字6桁"の方になります。ADサーバと"数字6桁"は何の関係もないため、Yoshida様に教えて頂いた方法は難しい状況です。
既存のアカウントのEメールを全て適当なユニークなものに置き換えて登録したら、問題無いでしょうか?
以上、ご確認よろしくお願い致します。
> 既存のアカウントのEメールを全て適当なユニークなものに置き換えて登録したら、問題無いでしょうか?
フォーラム投稿等のメール通知がユーザに到着しないようになる以外、問題はありません。
もし、SQLを実行できる環境をお持ちでしたら、既存の全ユーザアカウントに対して以下のようなSQL文を実行することも可能かと思います。
例)
UPDATE `mdl_user` SET username = 'ab123450', auth = 'ldap' WHERE username = '123450';
UPDATE `mdl_user` SET username = 'ab123451', auth = 'ldap' WHERE username = '123451';
UPDATE `mdl_user` SET username = 'ab123452', auth = 'ldap' WHERE username = '123452';