このサンプルToolは、大学での利用を想定したツールテンプレートです。PlatformであるLMSから起動されたToolはLTI1. 3にて接続が確立され、ToolがPlatformからIDトークンを受け取った後にmain.phpを実行します。main. phpではユーザのroleを参照して、教員あるいは学生用の初期画面を表示するコードにredirectされます。 この事例では、 LTI1.3の次の機能が実装されています。CoreはLMSとのLTI1.3接続を確立します。また、NRPSはLMSからコース名簿を取り出します。
- LTI1.3 Tool Core
- LTI Advantage
- LTI1.3 NRPS (Names and Role Provisioning Services)
LTI1.3 Toolと接続するPlatformは LTI1.3 および LTI Advantage を実装している必要があります。ここでは、Moodle3.10 を前提としています。 MoodleはOpen Source Softwareですので、AWS等で構築することができます。LTI1.3はPlatformとTool間がTLS1. 2を前提としておりSSL証明書の設定が必要です。 また、日本IMS協会ではテスト用のMoodleを下記のURLにて構築しています。
https://www.imsjapan.org/moodle/ (2021.xx公開予定)
Toolの実行は、開発を行なうローカルPCでWebサーバを稼働させる方法と、AWSのようなクラウドでサーバを稼働させる方法があります。いずれの方法でもCORS 問題への対応のためPHP 7.3 以上が必要となりますが、XAMPPを利用することが最も簡便です。下記のパッケージでの稼働を確認しています。
ローカルPC
- Windows 10 + xampp-windows-x64-7.3.23-0-VC15
AWSで提供されるサーバ
- AWS Linux2 + xampp-linux-x64-7.3.23-0-installer.run
XAMPPについては実行時にNoticeレベルのエラーが生じるとXMLHttpRequestでやり取りされるコードがエラーを引き起こすため、php.ini において下記を設定してください。
error_reporting=E_ALL & ~E_NOTICE
-
https化
LTI1.3はPlatformとTool間がTSL1.2で保証されていることが前提となりますので自己証明書によるSSL化します。localhostのSSL化の情報は多々存在しますが、下記が参考になります。
-
DocumentRootの設定
httpd.confではなくxampp/apache/conf/extra/httpd-ssl.conf にて設定します。 下記を参照して設定してください。Document Root は git cloneで作成されるフォルダーとなります。
##### Listen is Required for LTI13
Listen 443
SSLCipherSuite HIGH:MEDIUM:!MD5:!RC4:!3DES
SSLProxyCipherSuite HIGH:MEDIUM:!MD5:!RC4:!3DES
SSLHonorCipherOrder on
SSLProtocol all -SSLv3
SSLProxyProtocol all -SSLv3
SSLPassPhraseDialog builtin
SSLSessionCache "shmcb:D:/xampp/apache/logs/ssl_scache(512000)"
SSLSessionCacheTimeout 300
<VirtualHost _default_:443>
#########DocumentRoot "D:/xampp/htdocs"
DocumentRoot "G:/lti13-php-tiny-example-tool"
<Directory "G:/lti13-php-tiny-example-tool">
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Require all granted
</Directory>
####ServerName localhost:443
####ServerAdmin [email protected]
ErrorLog "D:/xampp/apache/logs/error.log"
TransferLog "D:/xampp/apache/logs/access.log"
SSLEngine on
SSLCertificateFile "conf/my-localhost.crt"
SSLCertificateKeyFile "conf/my-localhost.key"
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory "D:/xampp/apache/cgi-bin">
SSLOptions +StdEnvVars
</Directory>
BrowserMatch "MSIE [2-5]" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
CustomLog "D:/xampp/apache/logs/ssl_request.log" \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>
管理者権限で外部ツールを設定します。コースを担当する教員はそれを「活動もしくはリソースを追加する」にて担当するコースに設置します。
- {サンプルプログラムを展開したディレクトリ} にて下記を実行します。vendor ディレクトリが新規に作成され、そこにIMS LTI1.3 Library がインストールされます。
composer.phar install
- Moodleで外部ツールを設定したときに提供された情報を db/config/local.json に追加します。 なお、private_key_file はTool用に生成した秘密鍵を指定し、公開鍵は上述したMoodleにおける外部ツールの設定にて指定します。日本IMS協会で提供するMoodle を使う場合には、このサンプルプログラムで使っているTool_Pri.keyをそのまま使ってください。
"https://c3.yujitokiwa.jp/moodle": {
"client_id": "C1I9mztu7D1zL5o",
"auth_login_url": "https://c3.yujitokiwa.jp/moodle/mod/lti/auth.php",
"auth_token_url": "https://c3.yujitokiwa.jp/moodle/mod/lti/token.php",
"key_set_url": "https://c3.yujitokiwa.jp/moodle/mod/lti/certs.php",
"private_key_file": "/Tool_Pri.key",
"deployment": [
"1"
]
},
- 自己証明書などによってSSL化したhttpdサーバーにおいて、DocumentRootは{サンプルプログラムを展開したディレクトリ} で設定してください。
次の手順でPlatformからToolを起動します。
- XAMPPを起動します。これで Tool はPlatformからの起動待ちとなります。
- Moodleにログインして、コースに配置されたLTIツールのリンクをクリックします。
- ユーザのロールにより教員画面あるいは学生画面が表示されます。
設定すべきパラメータが多いため、多くの場合、設定後の接続テスト直後の起動は成功しない。確認すべきことは多々あるので、代表的な確認項目を列挙する。
- https://localhost/imsjtool.php で、login.phpやgame.phpのディレクトリにアクセスできることを確認します。
- local.json において、同一のPlatformを異なるdeploymentナンバーで複数設定するとエラーが生じるので、不要なエントリは削除してください。
- Moodleの外部ツールの設定はデフォルトから変更されていることを確認します。
- xdebugを導入し、PhpStormなどでBreakpointを設定してデバッグします。PhpStormはアカデミックユーザの場合、所定の手続きをすれば無償で利用できます。
- ブラウザがFirefoxでかつPCでToolを稼働させる場合、ブラウザーオプションの証明書マネージャーにてlocalhost:443のサーバ証明書のエラー例外を設定していることを確認します。