7: 2021-08-30 (月) 15:09:35 iseki |
8: 2021-09-04 (土) 01:48:00 iseki |
- | ** Hack for Moodle LTI [#w4c22429] | + | ** Hack for [[Moodle]] - [[LTI]] [#w4c22429] |
- | *** [[JupyterHub]] の Swapner での受け取り処理 [#vd91a1e1] | + | |
| + | *** 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 |
| + | |
| + | *** [[JupyterHub]] の Swapner での LTI 情報の受け取り処理 [#vd91a1e1] |
| - jupyterhub_config.py | | - jupyterhub_config.py |
| import os | | import os |
| - Moodleの外部ツールの設定で,「一般」の「さらに表示する」でカスタムパラメータを指定すると,JupyterHub に任意のパラメータを送れる. | | - Moodleの外部ツールの設定で,「一般」の「さらに表示する」でカスタムパラメータを指定すると,JupyterHub に任意のパラメータを送れる. |
| -- ''XXX=ZZZ'' と入力すると,上記方法で ''{'costom_xxx': 'ZZZ'}'' として受け取れる(キーは小文字化される). | | -- ''XXX=ZZZ'' と入力すると,上記方法で ''{'costom_xxx': 'ZZZ'}'' として受け取れる(キーは小文字化される). |
- | -- # - などの特殊文字は ''_'' になる. | + | -- # - などの特殊文字は ''_'' になる.''snake_case'' と言うらしい. |
| | | |
| | | |