PlayWithASL Help Center

Find documentation for LMS integration, LTI setup, and troubleshooting.

General LMS Guide

Last Updated: Jan 22, 2026
{% extends "base.html" %} {% block content %}

LTI Troubleshooting Guide

This guide helps you diagnose and solve common issues with the PlayWithASL LTI integration.

Diagnostic Tools

Use these special URLs to diagnose issues:

Tool URL Purpose
Debug Request {{ base_url }}/lti/debug/ Shows all request headers and parameters for any request
LTI Login Debug {{ base_url }}/lti/login-debug/ Specifically for debugging LTI login requests
JWKS Endpoint {{ jwks_url }} Shows the public key used for LTI authentication

Common Issues

Problem:

Canvas tries to load the LTI tool in an iframe, but Canvas SSO blocks iframe loading for security reasons.

Solutions:
  1. Update your Canvas Developer Key JSON with "windowTarget": "_blank" for each placement
  2. In assignments, check "Load This Tool In A New Tab"
  3. Update your placements in Canvas to use new windows instead of iframes
Technical Explanation:

Canvas SSO sets security headers that prevent its content from being loaded in iframes. Our tool has automatic iframe detection and will try to break out, but proper configuration is more reliable.

Problem:

The system can't find a matching platform record for the issuer in the LTI launch.

Solutions:
  1. Check which issuer Canvas is sending by using the login-debug endpoint
  2. Make sure you have a platform record for that exact issuer
  3. Common issuers:
    • https://canvas.instructure.com (main Canvas)
    • https://your-institution.instructure.com (institution-specific)
    • https://canvas.s5dli.ca (custom domain)
  4. Create any missing platform records using the dashboard

Problem:

Canvas doesn't recognize the lti_message_hint parameter we're sending back.

Solutions:
  1. Check if Canvas is providing an lti_message_hint in the login request
  2. Ensure we're passing it back exactly as received
  3. Make sure your tool is properly registered in Canvas
  4. Check that all URLs end with trailing slashes
Technical Notes:

The lti_message_hint is a temporary token with a short expiration time. If too much time passes between receiving it and using it, Canvas will reject it.

Problem:

Django's APPEND_SLASH setting causes issues with Canvas POST requests that don't end with a trailing slash.

Solutions:
  1. Ensure all URLs in your Canvas configuration end with trailing slashes
  2. Our custom middleware helps handle this, but proper configuration is better
  3. Make sure your LTI configuration in Canvas matches exactly what's in settings.py

Configuration Checklist

Verify these key configurations:

1. Django Settings
  • APPEND_SLASH is set to True
  • All LTI URLs in settings.py have trailing slashes
  • LTI_TOOL_JWKS is properly formatted
  • Platforms are configured for all necessary issuers
2. Canvas Configuration
  • Developer Key JSON has correct URLs (with trailing slashes)
  • The client_id matches what's in your platform records
  • Tool is configured to open in a new window, not iframe
  • The Developer Key is active in Canvas
3. URL Consistency
Setting Value in Django Value in Canvas
Launch URL {{ launch_url }} (Should match)
Login URL {{ login_url }} (Should match)
JWKS URL {{ jwks_url }} (Should match)
{% endblock %}