Pular para o conteúdo
Studeia Docs

Integracao Canvas LMS via LTI 1.3 (Studeia como tool provider)

Como registrar Studeia como external tool no Canvas via LTI 1.3: OIDC launch + JWT/JWKS, AGS grade passback, Names and Roles service, placements em course navigation e assignment

2026-05-24 6 min
Resposta curta

Studeia funciona como LTI 1.3 tool provider em Canvas LMS. Setup em Canvas: Admin > Developer Keys > LTI Key > paste config JSON gerado em /institution/lti-tools do Studeia > ativar placement. OIDC launch + JWT/JWKS + AGS grade passback (notas sincronizam automaticamente pro Canvas Gradebook). Util para universidades em Canvas que querem complementar com Studeia (tutor IA, gamificacao, mobile B2B) em cursos especificos sem desinvestir o LMS principal.

Pre-requisitos

  • Studeia plano com LTI habilitado (Enterprise ou planos pagos)
  • Canvas Admin role (para registrar Developer Key)
  • HTTPS em ambos lados (LTI 1.3 exige TLS)

Setup

1. Studeia: gerar config LTI tool

/institution/lti-tools > New Tool:

  • Tool name: "Canvas 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

Studeia exibe JSON config completo (LTI 1.3 spec) — copie.

2. Canvas: registrar Developer Key

  1. Canvas Admin > Developer Keys > + Developer Key > LTI Key
  2. Method: Paste JSON
  3. Cole JSON config do passo 1
  4. Save > ON (ativar key)
  5. Copie Client ID gerado pelo Canvas

3. Canvas: instalar app no account/curso

  1. Account Admin > Settings > Apps > + App > By Client ID
  2. Cole Client ID
  3. Configure placements:
    • Course Navigation (link no menu lateral do curso)
    • Assignment Selection (criar assignment Studeia)
    • Link Selection (link em paginas/modulos)
    • User Navigation (link no menu do usuario)

4. Validar

Em qualquer curso Canvas: menu lateral > Studeia tool > deve abrir Studeia logado com mesmo usuario (via OIDC launch).

Como funciona

Aluno em Canvas clica em "Studeia Module"
  ↓
Canvas POST /lti/login?iss=... (Studeia OIDC Login endpoint)
  ↓
Studeia valida + retorna redirect para Canvas com:
  - state (HMAC-signed)
  - nonce (Redis 15min anti-replay)
  ↓
Canvas redirect aluno para /lti/launch com JWT id_token assinado
  ↓
Studeia LtiService.launch():
  1. Valida JWT signature via Canvas JWKS
  2. Valida nonce (anti-replay)
  3. Valida iss, aud, exp, deployment_id
  4. Extract user_id, name, email, roles, context_id
  5. JIT provisioning (cria User se nao existe — User.externalId = LTI sub)
  6. Cria/atualiza Enrollment (course_id mapping)
  7. Inicia sessao Studeia (Supabase auth)
  ↓
Redirect pra modulo/aula/quiz indicado (LtiLaunch.targetResource)
  ↓
Aluno usa Studeia normalmente

AGS grade passback

Quando aluno completa atividade Studeia que tem AGS line_item associado:

LessonCompletion / QuizAttempt finaliza
  ↓
Studeia LtiAdvantageService.sendScore():
  POST {issuer}/api/lti/courses/{courseId}/line_items/{itemId}/scores
  Body: {
    userId: lti.sub,
    scoreGiven: 85,
    scoreMaximum: 100,
    activityProgress: "Completed",
    gradingProgress: "FullyGraded",
    timestamp: now()
  }
  Auth: OAuth 2.0 Client Credentials grant (Studeia private key signs JWT)
  ↓
Canvas atualiza Gradebook automaticamente

Sem dupla escrita — Canvas Gradebook continua source-of-truth.

Names and Roles Provisioning Service (NRPS)

LTI 1.3 spec permite Studeia consultar lista de alunos do curso Canvas:

GET {nrps_url}/memberships
Auth: Bearer (OAuth 2.0 Client Credentials)

Retorna roster (alunos + roles). Util para pre-popular Enrollments antes do primeiro launch.

Casos de uso comuns

Universidade ja em Canvas quer Studeia em curso especifico

  1. Departamento de Computacao decide usar Studeia para CS101 (tutor IA real)
  2. Admin Canvas adiciona Studeia tool no curso CS101
  3. Estrutura: Canvas tem topics + assignments + gradebook. Studeia tem AI tutor + gamificacao + interactive content
  4. Quizzes via Studeia → grade passback pro Canvas Gradebook
  5. Outros cursos Canvas seguem sem Studeia

Migracao gradual Canvas → Studeia

  1. Adicionar Studeia LTI em todos cursos
  2. Cursos novos: criar direto no Studeia, link LTI no Canvas como entry point
  3. Cursos legacy: manter em Canvas, complementar com Studeia
  4. Em 1-2 anos: avaliar decommission Canvas

Limitacoes

  • Deep Linking 1.3: Studeia suporta selecao de recurso especifico (modulo/aula) durante adicionar tool em assignment
  • LTI Sub Manage (sub-tenants): nao suportado nativamente — cada tenant Studeia = um Developer Key Canvas
  • Canvas plagiarism integration: nao via Studeia LTI (use plugin Canvas separado)

Troubleshooting

JWT validation fails

Verificar JWKS URL Studeia acessivel publicamente: curl https://[tenant].studeia.com/.well-known/jwks.json deve retornar JSON com keys.

Grade passback nao funciona

Verificar AGS scope habilitado em Developer Key Canvas: https://purl.imsglobal.org/spec/lti-ags/scope/score + lineitem.readonly ou lineitem.

Aluno ve "Tool unavailable"

OIDC nonce expirado (>15min) ou state HMAC mismatch. Recarregar pagina Canvas.

Veja tambem

FAQ

Como adicionar Studeia em curso Canvas?

Studeia como LTI 1.3 tool provider. Em Studeia: /institution/lti-tools > Generate Client ID + JWKS. Em Canvas: Admin > Developer Keys > LTI Key > Method: Paste JSON > cole config Studeia. Depois Admin > Settings > Apps > By Client ID > paste ID. Ativar placements: course navigation, assignment, etc.

Notas sincronizam automaticamente?

Sim, via AGS (Assignment and Grade Service). Quando aluno completa atividade Studeia: backend chama POST {issuer}/api/lti/courses/{courseId}/line_items/{itemId}/scores. Grade aparece no Canvas Gradebook (Canvas continua source-of-truth). Sem dupla escrita.

Posso usar Studeia AI tutor dentro de Canvas?

Sim. Quando aluno acessa link LTI no Canvas: OIDC launch valida JWT + cria sessao Studeia + redireciona pra modulo/aula. Aluno usa tutor IA, gamificacao, tudo do Studeia — dentro do iframe Canvas (ou nova aba se iframe blocked).

Que dados Canvas envia para Studeia via LTI?

Per LTI 1.3 spec: user_id, name, email, roles (Learner/Instructor/Administrator), context_id (course_id Canvas), context_label/title (nome do curso), launch_presentation, resource_link_id. Plus AGS endpoints para grade passback. Names and Roles para listar alunos do curso (com permissao).

Veja tambem

Integracao Canvas LMS via LTI 1.3 (Studeia como tool provider)