Pre-requisitos
- Moodle 3.10+ (LTI 1.3 nativo)
- Studeia plano com LTI habilitado (Enterprise ou planos pagos)
- Moodle admin role
- HTTPS em ambos lados
Setup
1. Studeia: gerar config LTI tool
/institution/lti-tools > New Tool:
- Tool name: "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 gera Client ID + Deployment ID
2. Moodle: registrar tool
- Site administration > Plugins > Activity modules > External tool > Manage tools
- + configure a tool manually
- Tool name: "Studeia"
- Tool URL: do passo 1
- LTI version: LTI 1.3
- Public key type: Keyset URL > URL: JWKS Studeia
- Initiate login URL: do passo 1
- Redirection URI(s): do passo 1
- Tool configuration usage: 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
- Save
3. Adicionar em curso
- Curso Moodle > Turn editing on > Add an activity > External tool
- Preconfigured tool: Studeia
- Activity name: "Modulo Studeia - CS101"
- Save
Aluno clica no link > OIDC launch > Studeia loga via JWT > redirect pra modulo.
Como funciona
Identico ao Canvas LTI (mesma spec LTI 1.3):
Aluno clica em "Modulo Studeia" no curso Moodle
↓
Moodle POST /lti/login (Studeia OIDC Login)
↓
Studeia valida + redirect com state + nonce
↓
Moodle redirect aluno para /lti/launch com JWT id_token
↓
Studeia LtiService.launch():
1. Valida JWT via Moodle JWKS (auto-fetched)
2. Valida nonce (Redis 15min anti-replay)
3. JIT provisioning (User com User.externalId = LTI sub)
4. Cria Enrollment se necessario
5. Inicia sessao Studeia
↓
Redirect pra modulo/aula
AGS grade passback
Aluno completa quiz Studeia
↓
LtiAdvantageService.sendScore() → POST score
↓
Moodle Gradebook atualizado
Quando usar LTI vs IMS CC
| Cenario | Recomendado |
|---|---|
| Manter Moodle, complementar com Studeia em cursos pilotos | LTI |
| Migrar TUDO de Moodle pra Studeia | IMS CC import (POST /api/institution/courses/import) |
| Departamento experimenta Studeia antes de decisao institucional | LTI |
| Moodle vai ser descontinuado em 6-12 meses | IMS CC import + paralelo durante migracao |
Vantagens LTI vs migracao total
✅ Estudante usa SSO Moodle ja existente (Shibboleth, OIDC institucional) ✅ Gradebook Moodle continua source-of-truth ✅ Sem necessidade de migrar alunos / cursos / historico ✅ Reversivel facil — remover tool Moodle = volta ao estado anterior ✅ Por-curso (so cursos selecionados, nao instituicao inteira)
Limitacoes
- Performance: cada LTI launch e ~500-1000ms (JWT validation + Studeia bootstrapping)
- SSO experience: aluno faz 1 click no Moodle, 1-2s depois esta no Studeia (nao instantaneo)
- Moodle Workshop activities: nao mapeavel para Studeia (recriar manualmente)
- Plugins Moodle customizados: nao sao chamados via LTI Studeia