31: 2021-08-30 (月) 11:52:02 iseki |
32: 2021-09-04 (土) 00:14:15 iseki |
| 136 | | 136 |
| | | |
- | **** LTIモジュール [#m4467ad6] | + | **** [[LTI]] モジュール [#m4467ad6] |
- | ***** Learning Tools Interoperability [#lde959fa] | + | |
- | - https://github.com/jupyterhub/ltiauthenticator | + | |
| | | |
- | - 既にインストールされている ltiauthenticator だと Moodle にログインできない. | |
- | -- "Moodleと Jupyter Notebookの 連携 によるプログラミング 教育環境 の 構築" 石坂徹,桑田喜隆, et. al., Moodle Moot Japan 2019 Proceedings (2019), pp.32-37 | |
- | --- /usr/local/anaconda/envs/jupyterhub/lib/python3.8/site-packages/ltiauthenticator/__init__.py | |
- | 152 # Before we return lti_user_id, check to see if a canvas_custom_user_id was sent. | |
- | 153 # If so, this indicates two things: | |
- | 154 # 1. The request was sent from Canvas, not edX | |
- | 155 # 2. The request was sent from a Canvas course not running in anonymous mode | |
- | 156 # If this is the case we want to use the canvas ID to allow grade returns through the Canvas API | |
- | 157 # If Canvas is running in anonymous mode, we\'ll still want the \'user_id\' (which is the `lti_user_id``) | |
- | 158 | |
- | 159 canvas_id = handler.get_body_argument('custom_canvas_user_id', default=None) | |
- | 160 + product_code = handler.get_body_argument('tool_consumer_info_product_family_code', default=None) | |
- | 161 | |
- | 162 if canvas_id is not None: | |
- | 163 user_id = handler.get_body_argument('custom_canvas_user_id') | |
- | 164 + elif 'moodle' in product_code: | |
- | 165 + user_id = handler.get_body_argument('ext_user_username') | |
- | 166 else: | |
- | 167 user_id = handler.get_body_argument('user_id') | |
- | 168 | |
- | | |
- | ***** jupyterhub_config.py [#c6db4f7a] | |
- | c.JupyterHub.authenticator_class = 'ltiauthenticator.LTIAuthenticator' | |
- | c.LTIAuthenticator.consumers = { | |
- | os.environ['LTI_CLIENT_KEY']: os.environ['LTI_CLIENT_SECRET'] | |
- | } | |
- | - キーは二つとも openssl rand -hex 32 で生成. | |
- | -- openssl rand -hex 32 | |
- | #br | |
- | | |
- | ***** Moodle 側 [#sd9e4f7f] | |
- | - 管理者‘IDで,「サイト管理」=> 「プラグイン」=> 「外部ツール:ツールを管理する」(=>「ツールを手動設定する」) | |
- | -- デフォルト起動コンテナは「新しいウィンドウ」にする. | |
- | | |
- | - [[Hack>Moodle/Moodle-LTI]] | |
- | #br | |
- | | |
- | ***** error : module 'oauthlib.oauth1.rfc5849.signature' has no attribute 'signature_base_string' [#l6c7a130] | |
- | - ライブラリが足りない | |
- | -- conda install oauthlib | |
- | #br | |
- | | |
- | ***** 欠点:利点? [#w4038708] | |
- | - %%一度 Moodle 経由でログインすると,ブラウザがアカウントを覚えているらしく,次回からは Moodle 経由で無くともログイン可能.%% ログアウトすればOK | |
- | - その他の一般ユーザ認証と併用できない. | |
| #br | | #br |
| | | |
| - DockerSpawner を使用すると,作業ディレクトリが /home/jovyan/work 固定なのだが? | | - DockerSpawner を使用すると,作業ディレクトリが /home/jovyan/work 固定なのだが? |
| - c.DockerSpawner.notebook_dir 辺りをいじっても変化しない? | | - c.DockerSpawner.notebook_dir 辺りをいじっても変化しない? |
- | - 皆考えることは一緒:https://github.com/jupyter/docker-stacks/issues/358 | + | - https://github.com/jupyter/docker-stacks/issues/358 |
| #br | | #br |
| | | |