Add LTI 1.3 support (as Tool Provider)#361
Add LTI 1.3 support (as Tool Provider)#361gruwitdacrew wants to merge 11 commits intomimi-net:mainfrom
Conversation
|
Я в детали не вдавался, но точно нужен public/private key прямо в репозитории? Можно файлы оставить, но текст внутри заменить на какой-то поясняющий, а не на реальный ключ |
front/src/miminet_model.py
Outdated
| platform = db.Column(Text, nullable=True) | ||
| platformUserId = db.Column(Text, nullable=True) |
There was a problem hiding this comment.
не очень понятно что за "platform". Браузер с которого клиент заходит? Как будто нужно имя чуть понятнее. И почему platform может быть Null?
There was a problem hiding this comment.
Platform - это название платформы, с которой у miminet интеграция. Хранить просто текстовое поле как ссылку на платформу было временным и не очень хорошим решением, сейчас ссылка происходит через поле platform_client_id (берется из конфигурации). Это нужно, чтобы понимать, что пользователь с пришел с платформы и логинится он посредством lti. Для этого также было добавлено поле platform_user_id, чтобы делать сопоставление юзера с платформы с юзером miminet
Да, добавил сейчас конфиг в .gitignore. Ключи поменяем |
Добавлена поддержка протокола LTI 1.3 в роли обучающего инструмента.
Весь код поддержки находится в front\src\lti
Были добавлены следующие эндпоинты:
/lti/login - запускает процесс OpenID Connect аутентификации и авторизации на платформе. В результате данного процесса формируется id_token с вшитой информацией и пользователе и задании и передается в контекстный запуск инструмента
/lti/launch - контекстный запуск инструмента (с заданием и пользователем)
/lti/jwks - необходим для получения открытого ключа инструмента (чтобы проверять подписи выставляемых оценок)
В папке lti есть конфиг, в котором будут находится конфигурации интеграций, с указанием необходимых протоколу данных о платформе. Сейчас там присутствует конфигурация платформы для теста от imsglobal.
Ключи нужно будет удалить из репозитория, сгенерировать новые и переместить в то место, где хранят секреты.
Также был добавлен эндпоинт для получения section, в котором создается SessionQuestion и прочие подготовительные вещи перед выдачей вопроса пользователю.
Основные источники:
https://blackboard.github.io/lti/tutorials/implementation-guide
https://github.com/dmitry-viskov/pylti1.3-flask-example
https://www.imsglobal.org/spec/lti/v1p3