Prerequisites
- Studeia plan with LTI enabled (Enterprise or paid plans)
- Canvas Admin role
- HTTPS on both sides
Setup
1. Studeia: generate LTI tool config
/institution/lti-tools > New Tool: Tool name, Target Link URI, OIDC Login URI, Public JWKS URL. Studeia generates Client ID + Deployment ID. Display complete JSON config.
2. Canvas: register Developer Key
Canvas Admin > Developer Keys > LTI Key > Method: Paste JSON > paste from step 1 > Save > ON. Copy Client ID generated by Canvas.
3. Canvas: install app
Account Admin > Settings > Apps > By Client ID > paste. Configure placements: Course Navigation, Assignment Selection, Link Selection, User Navigation.
4. Validate
Any Canvas course > side menu > Studeia tool > should open Studeia logged with same user via OIDC launch.
How it works
Student in Canvas clicks "Studeia Module" → Canvas POST /lti/login → Studeia validates + redirects with state + nonce → Canvas redirects student to /lti/launch with JWT id_token → Studeia LtiService.launch() validates JWT, nonce, JIT provisions user, creates Enrollment, starts session → redirect to module/lesson/quiz.
AGS grade passback
Student completes Studeia activity with AGS line_item → LtiAdvantageService.sendScore() → POST {issuer}/api/lti/courses/{courseId}/line_items/{itemId}/scores → Canvas Gradebook auto-updates.
Names and Roles Provisioning Service (NRPS)
LTI 1.3 spec allows Studeia to query Canvas course student list: GET {nrps_url}/memberships (Bearer auth). Useful to pre-populate Enrollments.
Common use cases
University already on Canvas wants Studeia in specific course
- CS department decides to use Studeia for CS101 (real AI tutor)
- Canvas Admin adds Studeia tool in CS101 course
- Canvas has topics + assignments + gradebook. Studeia has AI tutor + gamification + interactive content
- Quizzes via Studeia → grade passback to Canvas Gradebook
Gradual Canvas → Studeia migration
- Add Studeia LTI in all courses
- New courses: create directly in Studeia, LTI link in Canvas as entry point
- Legacy courses: keep in Canvas, complement with Studeia
- In 1-2 years: evaluate Canvas decommission
Troubleshooting
- JWT validation fails: verify JWKS URL publicly accessible
- Grade passback not working: verify AGS scope enabled in Canvas Developer Key
- Student sees "Tool unavailable": OIDC nonce expired (>15min) or state HMAC mismatch