Skip to content

Comments

Add LTI 1.3 support (as Tool Provider)#361

Open
gruwitdacrew wants to merge 11 commits intomimi-net:mainfrom
gruwitdacrew:main
Open

Add LTI 1.3 support (as Tool Provider)#361
gruwitdacrew wants to merge 11 commits intomimi-net:mainfrom
gruwitdacrew:main

Conversation

@gruwitdacrew
Copy link

Добавлена поддержка протокола 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

@d-zaytsev
Copy link
Contributor

Я в детали не вдавался, но точно нужен public/private key прямо в репозитории? Можно файлы оставить, но текст внутри заменить на какой-то поясняющий, а не на реальный ключ

Comment on lines 28 to 29
platform = db.Column(Text, nullable=True)
platformUserId = db.Column(Text, nullable=True)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

не очень понятно что за "platform". Браузер с которого клиент заходит? Как будто нужно имя чуть понятнее. И почему platform может быть Null?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Platform - это название платформы, с которой у miminet интеграция. Хранить просто текстовое поле как ссылку на платформу было временным и не очень хорошим решением, сейчас ссылка происходит через поле platform_client_id (берется из конфигурации). Это нужно, чтобы понимать, что пользователь с пришел с платформы и логинится он посредством lti. Для этого также было добавлено поле platform_user_id, чтобы делать сопоставление юзера с платформы с юзером miminet

@gruwitdacrew
Copy link
Author

Я в детали не вдавался, но точно нужен public/private key прямо в репозитории? Можно файлы оставить, но текст внутри заменить на какой-то поясняющий, а не на реальный ключ

Да, добавил сейчас конфиг в .gitignore. Ключи поменяем

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants