Prérequis
- Moodle 3.10+ (LTI 1.3 natif)
- Studeia avec LTI activé (Enterprise ou plans payants)
- Rôle administrateur Moodle
- HTTPS des deux côtés
Configuration
1. Studeia : générer la configuration de l'outil LTI
/institution/lti-tools > New Tool :
- Nom de l'outil : "Moodle Production"
- Target Link URI :
https://[tenant].studeia.com/lti/launch - OIDC Login URI :
https://[tenant].studeia.com/lti/login - Public JWKS URL :
https://[tenant].studeia.com/.well-known/jwks.json - Studeia génère un Client ID + Deployment ID
2. Moodle : enregistrer l'outil
- Site administration > Plugins > Activity modules > External tool > Manage tools
- + configure a tool manually
- Nom de l'outil : "Studeia"
- URL de l'outil : de l'étape 1
- Version LTI : LTI 1.3
- Type de clé publique : Keyset URL > URL : JWKS Studeia
- Initiate login URL : de l'étape 1
- Redirection URI(s) : de l'étape 1
- Utilisation de la configuration de l'outil : Show as preconfigured tool when adding an external tool
- Services > Assignment and Grade Services : Use this service for grade sync and column management
- Services > Names and Role Provisioning : Use this service to retrieve members information
- Enregistrer
3. Ajouter dans un cours
- Cours Moodle > Turn editing on > Add an activity > External tool
- Outil préconfiguré : Studeia
- Nom de l'activité : "Module Studeia - CS101"
- Enregistrer
L'apprenant clique sur le lien > lancement OIDC > Studeia connecte via JWT > redirection vers le module.
Fonctionnement
Identique au Canvas LTI (même spécification LTI 1.3) :
L'apprenant clique sur "Module Studeia" dans le cours Moodle
↓
Moodle POST /lti/login (Studeia OIDC Login)
↓
Studeia valide + redirige avec state + nonce
↓
Moodle redirige l'apprenant vers /lti/launch avec JWT id_token
↓
Studeia LtiService.launch() :
1. Valide le JWT via Moodle JWKS (récupéré automatiquement)
2. Valide le nonce (Redis 15min anti-rejeu)
3. Provisionnement JIT (User avec User.externalId = LTI sub)
4. Crée une Enrollment si nécessaire
5. Initialise la session Studeia
↓
Redirection vers le module/la leçon
Renvoi de notes AGS
L'apprenant complète un quiz Studeia
↓
LtiAdvantageService.sendScore() → POST score
↓
Gradebook Moodle mis à jour
Quand utiliser LTI vs IMS CC
| Scénario | Recommandé |
|---|---|
| Conserver Moodle, compléter avec Studeia dans des cours pilotes | LTI |
| Migrer TOUT de Moodle vers Studeia | Import IMS CC (POST /api/institution/courses/import) |
| Un département teste Studeia avant une décision institutionnelle | LTI |
| Moodle sera arrêté dans 6-12 mois | Import IMS CC + parallèle pendant la migration |
Avantages LTI vs migration totale
✅ L'apprenant utilise le SSO Moodle existant (Shibboleth, OIDC institutionnel) ✅ Le Gradebook Moodle reste la source de vérité ✅ Pas besoin de migrer les apprenants / cours / historique ✅ Réversible facilement — supprimer l'outil Moodle = retour à l'état précédent ✅ Par cours (uniquement les cours sélectionnés, pas toute l'institution)
Limitations
- Performance : chaque lancement LTI prend ~500-1000ms (validation JWT + initialisation Studeia)
- Expérience SSO : l'apprenant fait 1 clic dans Moodle, 1-2s plus tard il est dans Studeia (pas instantané)
- Activités Moodle Workshop : non mappables vers Studeia (à recréer manuellement)
- Plugins Moodle personnalisés : non appelés via LTI Studeia