LTI 1.3, Autograding, Subgroups and Templates for CircuitVerse | GSoC 2026 | Final Report
说明与用途
CircuitVerse 将其 LMS 集成从 LTI 1.1 升级到 LTI 1.3,并添加了成绩回传、深度链接、名册同步、自动评分、子组和电路模板。
问题
CircuitVerse needed to upgrade its LMS integration from deprecated LTI 1.1 to LTI 1.3 and add grade passback, deep linking, roster sync and autograding.
结果
Over 22 weeks, 44 pull requests were opened; six merged, including the core LTI 1.3 handshake. The project added robust grade passback, deep linking, roster sync, autograding, subgroups and circuit templates, improving integration with LMSs and automating grading workflows.
工作流
- 1. Split LTI 1.3 implementation into 24 small pull requests for reviewability
- 2. Implement JWT validator with strict algorithm enforcement and key rotation handling
- 3. Sign state as a signed token to avoid session dependency
- 4. Add OIDC login endpoint and secure CSRF handling
- 5. Implement grade passback via Assignment and Grade Services
- 6. Add deep linking support for embedding content
- 7. Implement roster sync to create CircuitVerse groups from LMS class lists
- 8. Build autograding pipeline with test suite editor and grading pipeline
- 9. Add subgroup (team) support within groups
- 10. Create circuit template library for reusable designs
证据
I set out to move CircuitVerse's LMS integration from LTI 1.1 to LTI 1.3 and to add four things on top of it: grade passback, deep linking, roster sync and autograding.
The proof of concept signed users in with User.find_by(email: payload["email"])… The fix keys identity on the sub claim, scoped to the deployment it came from.
Most of its tests are attacks: a token signed by the wrong key, alg: none, an expired token, the wrong issuer or audience, a replayed nonce, and algorithm confusion.
- 记录日期: 2026-11-02T04:58:47.689Z