Partie 10 — LTI Advantage
⏱️ TL;DR — Le lancement LTI 1.3 de la Partie 9 ouvre la porte : l’élève arrive connecté dans ton outil. Mais la valeur est derrière — c’est LTI Advantage = LTI 1.3 Core + trois services : Deep Linking (l’enseignant choisit quel contenu de ton outil placer dans son cours), AGS (Assignment and Grade Services — ton outil renvoie les notes dans le carnet), NRPS (Names and Role Provisioning Services — ton outil lit la liste de la classe). Pour appeler un service, l’outil obtient un jeton d’accès OAuth2 auprès de la plateforme (grant
client_credentials+ un JWTclient_assertionsigné avec sa clé privée). Et 1EdTech certifie les produits LTI Advantage : le label qui ouvre les marchés éducatifs. Cette partie t’apprend à implémenter les trois services de bout en bout.
Le problème qu’on résout
En Partie 9, ton studio d’exercices se lance proprement depuis le Moodle d’une école : SSO, contexte, rôles. Mais un outil qui se contente d’afficher une page, c’est un iframe amélioré. Ce que l’enseignant veut vraiment :
- choisir précisément quel exercice de ton catalogue apparaît dans son cours, sans copier-coller d’URL ;
- que la note obtenue remonte toute seule dans son carnet, à côté des autres ;
- que ton outil connaisse déjà sa classe (pré-remplir les élèves, afficher un tableau de suivi) sans ressaisie.
Ces trois besoins sont exactement les trois services de LTI Advantage. Sans eux, ton outil « marche » mais reste un gadget. Avec eux, il devient une brique du LMS — celle qu’on déploie sur toute une académie.
Ce que tu sauras faire à la fin de cette partie
- Situer LTI Advantage (Core + Deep Linking + AGS + NRPS) et repérer les claims de service dans un
id_token. - Obtenir un jeton d’accès OAuth2 (
client_credentials+client_assertionsigné) pour appeler les services. - Implémenter Deep Linking : lire
deep_linking_settings, renvoyer unLtiDeepLinkingResponseavec descontent_items. - Implémenter AGS : créer une colonne (
lineitem), publier un Score (POST {lineitem}/scores), relire lesresults. - Implémenter NRPS : lire le conteneur
members, gérer la pagination, respecter la confidentialité. - Sécuriser tout ça (asymétrie inversée des clés, scopes au minimum, rotation) et viser la certification 1EdTech.
Les chapitres
| # | Chapitre | En un mot |
|---|---|---|
| 10.1 | Vue d’ensemble | Core + 3 services ; obtenir un jeton d’accès ; les scopes. |
| 10.2 | Deep Linking | L’enseignant choisit le contenu ; content_items. |
| 10.3 | AGS : renvoyer des notes | lineitem, l’objet Score, results. Le chapitre « valeur ». |
| 10.4 | NRPS : lire le roster | Le conteneur members, pagination, confidentialité. |
| 10.5 | Sécurité & conformité | Clés, scopes, rotation, certification 1EdTech, checklist. |
Cette partie s’appuie sur le socle LTI 1.3 posé en Partie 9 : le flux OIDC + JWT (9.3), le flux de lancement (9.4) et les claims (9.5). On ne redéfinit pas OIDC, JWT ou JWKS ici — on les réutilise.
Le fil rouge
Le studio d’exercices FormaCampus franchit un cap : il renvoie les scores d’exercices au carnet de Moodle via AGS, lit la classe via NRPS, laisse l’enseignant choisir l’exercice via Deep Linking, et vise la certification 1EdTech pour décrocher des marchés d’académies. Chaque chapitre fait avancer un de ces chantiers, dans l’encadré 🧭 Sur FormaCampus.
On commence : Vue d’ensemble.