flagflag  If you want to see English page, please click "English" Button at Left.
7: 2021-08-30 (月) 15:09:35 iseki ソース 現: 2023-04-24 (月) 00:29:00 iseki ソース
Line 1: Line 1:
-** Hack for Moodle LTI [#w4c22429] +** Hack for [[Moodle]] - [[LTI]] [#w4c22429] 
-*** [[JupyterHub]] の Swapner での受け取り処理 [#vd91a1e1]+- [[Moodle+JupyterHub]] 
 +- [[Moodle]], [[JupyterHub]] 
 +- [[LTI]] 
 +#br 
 + 
 +*** iframe を使用すると,chrome, edgeでは 405 : Method Not Allowed が返される件 [#id5b6e70] 
 +- SameSite=Lax であるため,iframe 使用時は Moodleのホストと JupyterHub のホストが異なる場合は,cookie が送信されない. 
 +#br 
 + 
 +**** JupyterHub の log [#y1916cbf] 
 +- 返されたステータス 
 +-- 302 POST 
 +-- 302 GET (通常はここで 200が返る) 
 +-- 302 GET 
 +-- 405 GET 
 +#br 
 + 
 +**** ソースコード トレース (数字はトレース順) [#oaf0a04f] 
 +- ltiauthenticator/lti11/auth.py 
 +-- 0. authenticate() 
 + 
 +- jupyterhub/handlers/base.py 
 +-- 4. login_user()  self.current_user -> None 
 +-- 5. self.get_current_user_cookie() 
 +-- 6. self._user_for_cookie()   cookie_id-> None  cookie_name=jupyterhub-hub-login 
 + 
 +- tornado/web.py 
 +-- 1. _unimplemented_method()  HTTPError(405) を返す 
 +-- 2. wrapper()  で 302 が返る.通常なら 200 が返るはず. 
 +-- 3. self.current_user -> None 
 +-- 7. get_secure_cookie()   ''結局,jupyterhub-hub-login のクッキーありません.(Webブラウザから送信されていません)'' 
 +#br 
 + 
 +**** Moodle ホスト上で,JupyterHub へ接続するための feserver を動かしてみる. [#a6a32ef6] 
 +- cookie が送信されない理由について推測が正しいならば,MoodleとJupyterHubを同じホストで動かせば(若しくは動いているように見せれば),iframeは問題なく使用できるはず. 
 +- feserver のSSLのサーバ証明書で手こずったが,Apacheで使用している証明書使用したところ上手く繋がった. 
 +- chrome, edge でも iframe の埋め込みが問題なく動作. 
 +- でも問題点を確認したのみで,解決にはなっていない. 
 + 
 +- ''問題点: Moodleと JupyterHubを別のホストで動かすと,iframe を使用した場合,chrome, edge から cookieが送信されない.''(その内 FireFoxもだよね) 
 +#br 
 +**** 解決方法 [#f974d825] 
 + 
 + c.JupyterHub.tornado_settings = { 
 +     "headers":{ "Content-Security-Policy": "frame-ancestors 'self' https://www.nsl.tuis.ac.jp" }, 
 +     "cookie_options": {"SameSite": "None", "Secure": True } 
 + } 
 + 
 + c.Spawner.args = ['--NotebookApp.tornado_settings={ 
 +         "headers":{"Content-Security-Policy": "frame-ancestors \'self\' https://www.nsl.tuis.ac.jp" }, 
 +         "cookie_options": { "SameSite": "None", "Secure": True } 
 +     }' 
 + ] 
 + 
 +**** 参考:DB [#vf633496] 
 + MariaDB [moodle_db]> show columns from mdl_lti; 
 + +-------------------------------+------​--------+------+-----+---------+--------​--------+ 
 + | Field                        | Type        | Null | Key | Default | Extra          | 
 + +-------------------------------+------​--------+------+-----+---------+--------​--------+ 
 + | id                            | bigint(10)  | NO  | PRI | NULL    | auto_increment | 
 + | course                        | bigint(10)  | NO  | MUL | 0      |                | 
 + | name                          | varchar(255) | NO  |    |        |                | 
 + | intro                        | longtext    | YES  |    | NULL    |                | 
 + | introformat                  | smallint(4)  | YES  |    | 0      |                | 
 + | timecreated                  | bigint(10)  | NO  |    | 0      |                | 
 + | timemodified                  | bigint(10)  | NO  |    | 0      |                | 
 + | typeid                        | bigint(10)  | YES  |    | NULL    |                | 
 + | toolurl                      | longtext    | NO  |    | NULL    |                | 
 + | securetoolurl                | longtext    | YES  |    | NULL    |                | 
 + | instructorchoicesendname      | tinyint(1)  | YES  |    | NULL    |                | 
 + | instructorchoicesendemailaddr | tinyint(1)  | YES  |    | NULL    |                | 
 + | instructorchoiceallowroster  | tinyint(1)  | YES  |    | NULL    |                | 
 + | instructorchoiceallowsetting  | tinyint(1)  | YES  |    | NULL    |                | 
 + | instructorcustomparameters    | longtext    | YES  |    | NULL    |                | 
 + | instructorchoiceacceptgrades  | tinyint(1)  | YES  |    | NULL    |                | 
 + | grade                        | bigint(10)  | NO  |    | 100    |                | 
 + | launchcontainer              | tinyint(2)  | NO  |    | 1      |                | 
 + | resourcekey                  | varchar(255) | YES  |    | NULL    |                | 
 + | password                      | varchar(255) | YES  |    | NULL    |                | 
 + | debuglaunch                  | tinyint(1)  | NO  |    | 0      |                | 
 + | showtitlelaunch              | tinyint(1)  | NO  |    | 0      |                | 
 + | showdescriptionlaunch        | tinyint(1)  | NO  |    | 0      |                | 
 + | servicesalt                  | varchar(40)  | YES  |    | NULL    |                | 
 + | icon                          | longtext    | YES  |    | NULL    |                | 
 + | secureicon                    | longtext    | YES  |    | NULL    |                | 
 + +-------------------------------+------​--------+------+-----+---------+--------​--------+ 
 + 
 +           <option value="1" selected="">デフォルト</option> 
 +           <option value="2">埋め込み</option> 
 +           <option value="3">埋め込み (ブロックなし)</option> 
 +           <option value="5">既存のウィンドウ</option> 
 +           <option value="4">新しいウィンドウ</option> 
 + 
 +*** [[JupyterHub]] の Swapner での LTI 情報の受け取り処理 [#vd91a1e1]
- jupyterhub_config.py - jupyterhub_config.py
 import os  import os
Line 22: Line 115:
- Moodleの外部ツールの設定で,「一般」の「さらに表示する」でカスタムパラメータを指定すると,JupyterHub に任意のパラメータを送れる. - Moodleの外部ツールの設定で,「一般」の「さらに表示する」でカスタムパラメータを指定すると,JupyterHub に任意のパラメータを送れる.
-- ''XXX=ZZZ'' と入力すると,上記方法で ''{'costom_xxx': 'ZZZ'}'' として受け取れる(キーは小文字化される). -- ''XXX=ZZZ'' と入力すると,上記方法で ''{'costom_xxx': 'ZZZ'}'' として受け取れる(キーは小文字化される).
--- # - などの特殊文字は ''_'' になる.+-- # - などの特殊文字は ''_'' になる.''snake_case'' と言うらしい.
Line 86: Line 179:
   'launch_presentation_return_url': 'https://el.mml.tuis.ac.jp/moodle/mod/lt​i/return.php?course=98&launch_container=​4&instanceid=11&sesskey=6wL3CYeL7Z'    'launch_presentation_return_url': 'https://el.mml.tuis.ac.jp/moodle/mod/lt​i/return.php?course=98&launch_container=​4&instanceid=11&sesskey=6wL3CYeL7Z'
 }  }
 +#br
 +** Moodle DB [#sab902e6]
 +*** LTIの typeid (External Tool 情報) を格納するテーブル [#d76ec06b]
 + MariaDB [moodle_db]> select id, name,baseurl,tooldomain,state,course,cli​entid  from  mdl_lti_types ;
 + +----+------------------+--------------​--------------------------------------+-​----------------------------+-------+---​-----+-----------------+
 + | id | name            | baseurl                                            | tooldomain                  | state | course | clientid        |
 + +----+------------------+--------------​--------------------------------------+-​----------------------------+-------+---​-----+-----------------+
 + |  3 | antares:443      | https://antares.nsl.tuis.ac.jp/hub/lti/l​aunch      | antares.nsl.tuis.ac.jp      |    1 |      1 | Oh9MyHxutcfbvhA |
 + |  4 | GITLAB:FE 8100  | https://gitlab.nsl.tuis.ac.jp:8100/hub/l​ti/launch  | gitlab.nsl.tuis.ac.jp:8100  |    1 |      1 | NULL            |
 + | 10 | procyon:443      | https://jupyterhub.nsl.tuis.ac.jp/hub/lt​i/launch  | jupyterhub.nsl.tuis.ac.jp  |    1 |      1 | NULL            |
 + | 12 | JupyterHub00:443 | https://jupyterhub00.nsl.tuis.ac.jp/hub/​lti/launch | jupyterhub00.nsl.tuis.ac.jp |    1 |      1 | NULL            |
 + | 13 | JupyterHub01:443 | https://jupyterhub01.nsl.tuis.ac.jp/hub/​lti/launch | jupyterhub01.nsl.tuis.ac.jp |    1 |      1 | NULL            |
 + | 14 | JupyterHub02:443 | https://jupyterhub02.nsl.tuis.ac.jp/hub/​lti/launch | jupyterhub02.nsl.tuis.ac.jp |    1 |      1 | NULL            |
 + | 15 | JupyterHub03:443 | https://jupyterhub03.nsl.tuis.ac.jp/hub/​lti/launch | jupyterhub03.nsl.tuis.ac.jp |    1 |      1 | NULL            |
 + | 19 | antares:8000    | https://antares.nsl.tuis.ac.jp:8000/hub/​lti/launch | antares.nsl.tuis.ac.jp:8000 |    1 |      1 | NULL            |
 + | 20 | aldebaran:443    | https://aldebaran.nsl.tuis.ac.jp/hub/lti​/launch    | aldebaran.nsl.tuis.ac.jp    |    1 |      1 | NULL            |
 + +----+------------------+--------------​--------------------------------------+-​----------------------------+-------+---​-----+-----------------+
 +- tooldomain は baseurl から抽出したようだ.
 +- clientid ???
#br #br


トップ   新規 ページ一覧 単語検索 最終更新   ヘルプ   最終更新のRSS 1.0 最終更新のRSS 2.0 最終更新のRSS Atom

サイト内 検索

ログイン

ユーザー名:

パスワード:


パスワード紛失
新規登録

サブ メニュー

ミニカレンダー

前月2024年 5月翌月
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
<今日>

オンライン状況

54 人のユーザが現在オンラインです。 (26 人のユーザが xpwiki を参照しています。)

登録ユーザ: 0
ゲスト: 54

もっと...

アクセスカウンタ

今日 : 1887188718871887
昨日 : 8048804880488048
総計 : 2367144823671448236714482367144823671448236714482367144823671448
Powered by XOOPS Cube 2.1© 2001-2006 XOOPS Cube Project
Design by XoopsDesign.com