I’m implementing an LTI 1.3 service and trying to request an access token from the Canvas endpoint:
POST {CANVAS_URL}/login/oauth2/token
I’m using grant_type=client_credentials and including a signed JWT in the request, as described in the OAuth2 Token Exchange documentation .
Here’s the high-level process:
Generate a JWT with claims:
iss: my tool's root URL
sub: my registered client_id
aud: {CANVAS_URL}/login/oauth2/token
iat and exp within 10 minutes
jti: UUID
Send a POST request with parameters:
grant_type = client_credentials
client_id (matches registration)
client_assertion_type = urn:ietf:params:oauth:client-assertion-type:jwt-bearer
client_assertion (the signed JWT)
scope including LTI AGS and NRPS scopes
The problem:When I submit this correctly (with the real client_id and signed JWT), the request times out with no response from Canvas.However, if I intentionally use an incorrect client_id, Canvas immediately responds with 401 Unauthorized as expected.
Additional details:
Everything works as expected in the Canvas test environment.
The issue only happens in our production environment, which is a self-hosted Canvas instance for my university.
Has anyone experienced this behavior? What could cause Canvas to hang on a valid client assertion request?
Is there something specific about JWT signing or key format that could cause Canvas to hang instead of returning an error?
Are there any Canvas logs or configuration settings we should check on a self-hosted instance?
Could this be related to firewall, SSL, or background job settings on the production instance?
Any guidance or examples would be appreciated!
Join this group to share your tips, insights, and reactions with other members.
Calling https://api.demo.badges.parchment.com/o/token yields a 503 error: <html>\r\n<head><title>503 Service Temporarily Unavailable</title></head>\r\n<body>\r\n<center><h1>503 Service Temporarily Unavailable</h1></center>\r\n</body>\r\n</html> I wasn't able to find any info whether this is being taken care of or not? Any…
We have begun noticing issues with Assignments that utilise LTI tools. Some tools treat a submission deadline as including the entire minute specified, rather than up to that minute. eg. The LTI tool accepts a configured 11:59 as up to 11:59:59. Whereas Canvas treats the deadline as 11:59:00. Why does this matter? Well,…
Is having students read the textbook considered an assignment or an activity if there is no grade but a required date?
Because Catalog only supports a single payment for an entire purchase, I want the entire transaction to happen in Stripe so that our learners can pay over an arbitrary number of months to Stripe and each payment is reported to Canvas. My understanding is this would require special coding and API/webhooks. Has anyone done…
Hello, Our K12 district is using Qmlativ as our SIS and sync through API. We will be using cross listing for the first time this year, and we are concerned about what will happen when we introduce a Long Term Sub to a class. We understand this will create a new course for the long term sub. We have questions about the…