SSOに関して

SSOに関して

- Osamu Suzuki の投稿
返信数: 10

はじめまして

SSOを前提とした認証の関しての事例を探しています。

実現されている事例、カストマイズした事例などご存知でしたら

教えていただけたらと思います。よろしくお願いします。

Osamu Suzuki への返信

Re: SSOに関して

- Toshihiro KITA の投稿
CAS
http://tp.its.yale.edu/tiki/tiki-index.php?page=CentralAuthenticationService
http://www.ulan.jp/results/base/01_06.html
を使ってSSOでのMoodleにおける認証をやる予定です。
多分,1ヶ月以内程度でテストをするつもりですので,
出来次第,結果報告します。

Toshihiro KITA への返信

Re: SSOに関して

- Osamu Suzuki の投稿

お返事ありがとうございます。

実際に環境がないので試してみることもできず。

色々調べてはいるのですが...ヘトヘト

報告お待ちしてます。

Osamu Suzuki への返信

Re: SSOに関して

- Toshihiro KITA の投稿
回答が大変遅くなりましたが,
熊本大学でも 4月から CAS (JA-SIG Central Authentication Service)
http://www.ja-sig.org/products/cas/
のサーバを運用しはじめたので,
Moodle で試してみました。

以下のようにして無事,シングルサインオンができました。
# LDAP の設定が必須(設定しないと,既存IDであっても認証が通らない)なのが
# ちょっと納得できませんが。


管理 >>ユーザ >>認証オプション
で,
「CASサーバ ( SSO ) を使用」を選ぶ。

CASサーバ設定
cas_enabled: Yes
cas_hostname: foobar.kumamoto-u.ac.jp (例です)
cas_baseuri: cas/ (例です)
cas_port: 443
cas_version: 2
cas_language: English
cas_create_user: Yes

LDAPサーバ設定
ldap_host_url:  (LDAPのホスト名を指定)

ユーザlookup設定
ldap_user_type: posixAccount (OpenLDAPの場合)
ldap_contexts:     ou=XXX,dc=yyy,dc=zzz,.... などと設定
ldap_search_sub: No
ldap_opt_deref: No
ldap_user_attribute: xxx (ユーザIDが入っている属性を)


これで,CAS 認証を試します。
最初にCAS認証でMoodleにログインするときは,
管理者として今後使う予定のID で入ってください。

また,
インストール時の管理者(admin)が使えなくなってしまうので,
以下の処置を行います。

mdl_user_admins のテーブルの冒頭にある
userid が primary administrator (これが,通常はadmin) になります。
CAS で認証した ID (そのuseridが3であるとする) を primary administrator に
するには,phpMyAdmin 等を用いて,mdl_user_admins において,
id=1, useid=2

id=1, userid=3
に変更します。

Toshihiro KITA への返信

Re: SSOに関して

- Kenichi NOMURA の投稿
Moodle1.9でcas_version: に3を指定したら対応していないバージョンとのエラーになりました。
対応していないのでしょうか?
また、「
LDAP の設定が必須(設定しないと,既存IDであっても認証が通らない)なのが
ちょっと納得できませんが。」と書いてありますが常にLDAPのポートを開けておく必要があるのでしょうか?
Kenichi NOMURA への返信

Re: SSOに関して

- Takayuki Fukuyama の投稿
エミットジャパンの福山です

> Moodle1.9でcas_version: に3を指定したら対応していないバージョンとのエラーになりました。
対応していないのでしょうか?

対応しているのですが、ライブラリ側の定義が1.0と2.0しかありませんので「2」を指定しなくてはならなくなってしまっています。(詳細はauth/cas/CAS/CAS.phpのソースでdefineされている所をご参照ください。)

>
常にLDAPのポートを開けておく必要があるのでしょうか?
バインドできる必要があります。これはCASの制限ではなくmoodle側の認証の実装がおかしいのだと思われますが、auth/cas/auth.phpldap_connect関数を参照ください。ldap_bindした結果を処理しているようなのでこの制約があります。trueを常に返すようにすればもしかすればスルーできるのかもしれませんが、、
ともあれbindが成功しないと認証が弾かれますので、ldapサーバのプロトコルバージョンにも注意してください。(PHPはデフォルトでv2のbindをかけにいきますが、v3しかサポートしないサーバは設定にてバージョンを合わせこむ必要があります)
Takayuki Fukuyama への返信

Re: SSOに関して

- Kenichi NOMURA の投稿
早速のご回答ありがとうございました。ソースを確認しましたが2まででした。
3で対応しているとのことで安心いたしました。また、LDAPの件も了解いたしました。

Toshihiro KITA への返信

Re: SSOに関して

- Kenichi NOMURA の投稿
CASの設定を行っておりますが下記の現象が出て進みません。
設定方法を教えてください。

【環境】
・Moodle1.9.2
・windows2003R2
・PHP Version 5.2.9
・CAS 3.0.6 (Debian)

【現象】
・MoodleのURLを入力する
・CASサーバのログオン画面表示
・正常に認証されると
http://a.com/moodle/login/index.php?ticket=ST-2271-cabL1kD9UYcMHxf0tmOHtjcJ3TueVAsfdt2-20
・Moodleのログオン画面が表示される(?)
・正しいユーザ・パスワードを入れるとログオンが完了する。
・MooldeをログアウトするとCASのログアウト画面が表示される
(CASからログアウトする: Yesにしているため)

CASサーバから戻ってきたときにログオンがされた状況になれば良いのですが・・・

Kenichi NOMURA への返信

Re: SSOに関して

- Takayuki Fukuyama の投稿

福山です

何かしらのトラブルがあるようですが、ちょっと推測が付きかねる状況ですね。phpcasのデバッグログを取得してみると何かしらの情報が把握できる可能性があります。以下のようにsetDebug()関数を追記するとログが取れます

auth/cas/auth.php


require_once($CFG->dirroot.'/auth/cas/CAS/CAS.php');
// ↓これを追記
phpCAS::setDebug('/tmp/phpcas.log');


setDebug()に与える引数はwebサーバの書き込み権限があるファイルを指定する必要があります。unix系ならこのような引数でもいいのですが、windowsの場合はちょっと変更しないと駄目かもしれません(そもそも/tmpが無いですね)。引数を与えなくてもよくて、この場合は環境変数%TMP%%TEMP%の下にphpCAS.logとして吐き出されるようです。何かの手掛かりになればと思います。

Takayuki Fukuyama への返信

Re: SSOに関して

- Kenichi NOMURA の投稿
ご連絡ありがとうございます。

申し訳ございません原因わかりました。
初歩的なミスでした。

LDAPからの移行で、ユーザの認証方法の選択 がLDAPになっておりました。

今回デバックを入れることなく解決いたしました。
今後ともご指導お願いいたします。

Kenichi NOMURA への返信

Re: SSOに関して

- Takayuki Fukuyama の投稿

ユーザデータベースのauthの所ですね。私もかつてハマってメモっておいた形跡があったのですがこれは思い出せませんでした。これだとphpCAS側でどれだけdebugしてもmoodle側の問題なので駄目でしたね。いろいろと切り分けがややこしいですね悲しい

こちらこそよろしくお願いいたします。