flagflag  
7: 2021-08-30 (Mon) 15:09:35 iseki source Cur: 2023-04-24 (Mon) 00:29:00 iseki source
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


Front page   New List of Pages Search Recent changes   Help   RSS of recent changes (RSS 1.0) RSS of recent changes (RSS 2.0) RSS of recent changes (RSS Atom)

Site Search

Login

Username:

Password:


Lost Password?
Register now!!

Sub Menu

mini Calendar

Last MonthJun 2024Next Month
Su Mo Tu We Th Fr Sa
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
Today

Who's Online

63 user(s) are online (3 user(s) are browsing xpwiki)

Members: 0
Guests: 63

more...

Access Counter

Today : 9219921992199219
Yesterday : 1861118611186111861118611
Total : 2383181523831815238318152383181523831815238318152383181523831815
Powered by XOOPS Cube 2.1© 2001-2006 XOOPS Cube Project
Design by XoopsDesign.com