Error HTTP 403 while processing Deep Linking response in LTI 1.3 integration

We are trying to integrate LAMS with Brightspace using LTI 1.3. With existing code we have been successful with other LMSes.
A Deep Linking request gets processed successfully. LAMS displays its content selection screen.
On save Brightspace produces a 403 error. Its logs only say "Error processing deep linking return".
Here is an anonymised request we are getting from Brightspace
----
{
"alg": "RS256",
"kid": "d830e74d-4e7a-47fd-be21-91a5bbe2918d",
"typ": "JWT"
}
{
"nbf": 1654763354,
"exp": 1654765154,
"iss": "https://anonymoustest.brightspace.com",
"aud": "cee1b12b-7a51-4031-b3f3-6290de804df6",
"iat": 1654763354,
"sub": "d3f1105f-7b67-4282-b71a-33f3fdadfa95_2387",
"given_name": "Anonymous",
"family_name": "An",
"name": "Anonymous An,
"email": "Anonymous.An@anonymous.com",
"nonce": "2432ad5c85fc",
"https://purl.imsglobal.org/spec/lti/claim/message_type": "LtiDeepLinkingRequest",
"https://purl.imsglobal.org/spec/lti/claim/version": "1.3.0",
"https://purl.imsglobal.org/spec/lti/claim/deployment_id": "ab6df953-502d-4d0e-aab4-a65a2b880a4c",
"https://purl.imsglobal.org/spec/lti/claim/target_link_uri": "https://anonymous.lamsinternational.com/lams/lti/advantage",
"https://purl.imsglobal.org/spec/lti/claim/roles": [
"http://purl.imsglobal.org/vocab/lis/v2/membership#Learner",
"http://purl.imsglobal.org/vocab/lis/v2/membership#Instructor",
"http://purl.imsglobal.org/vocab/lis/v2/membership#Member",
"http://purl.imsglobal.org/vocab/lis/v2/membership#Mentor",
"http://purl.imsglobal.org/vocab/lis/v2/membership#Administrator",
"http://purl.imsglobal.org/vocab/lis/v2/institution/person#Instructor",
"http://purl.imsglobal.org/vocab/lis/v2/institution/person#Staff"
],
"https://purl.imsglobal.org/spec/lti/claim/context": {
"id": "9052",
"label": "2017 test 1",
"title": "2017 test 1",
"type": [
"http://purl.imsglobal.org/vocab/lis/v2/course#CourseOffering"
]
},
"https://purl.imsglobal.org/spec/lti/claim/lis": {
"course_offering_sourcedid": "anonymoustest.brightspace.com:2017 test 1",
"course_section_sourcedid": "anonymoustest.brightspace.com:2017 test 1"
},
"https://purl.imsglobal.org/spec/lti/claim/launch_presentation": {
"locale": "en-US"
},
"http://www.brightspace.com": {
"tenant_id": "54fe20b5-4e8b-4ad4-a9ba-43985dc84795",
"org_defined_id": "",
"user_id": 2387,
"username": "Anonymous.An",
"Context.id.history": ""
},
"https://purl.imsglobal.org/spec/lti-ags/claim/endpoint": {
"scope": [
"https://purl.imsglobal.org/spec/lti-ags/scope/lineitem",
"https://purl.imsglobal.org/spec/lti-ags/scope/lineitem.readonly",
"https://purl.imsglobal.org/spec/lti-ags/scope/result.readonly",
"https://purl.imsglobal.org/spec/lti-ags/scope/score"
],
"lineitems": "https://anonymoustest.brightspace.com/d2l/api/lti/ags/2.0/deployment/ab6df953-502d-4d0e-aab4-a65a2b880a4c/orgunit/9052/lineitems"
},
"https://purl.imsglobal.org/spec/lti-dl/claim/deep_linking_settings": {
"accept_types": [
"link",
"file",
"ltiResourceLink",
"image"
],
"accept_media_types": "*/*",
"accept_presentation_document_targets": [
"iframe",
"window"
],
"accept_multiple": true,
"auto_create": false,
"deep_link_return_url": "https://anonymoustest.brightspace.com/d2l/lti/dl/content/orgUnitId/9052/linkId/131/parentModuleId/29653/cB5tc3pFZsZlDCZH_r2q1ycSazDE6YfOdGRg6OEfRFU%7e",
"data": "cB5tc3pFZsZlDCZH_r2q1ycSazDE6YfOdGRg6OEfRFU~"
},
"https://purl.imsglobal.org/spec/lti/claim/custom": {
"contexthistory": "",
"usertimezone": "Asia/Dubai"
},
"https://purl.imsglobal.org/spec/lti-nrps/claim/namesroleservice": {
"context_memberships_url": "https://anonymoustest.brightspace.com/d2l/api/lti/nrps/2.0/deployment/ab6df953-502d-4d0e-aab4-a65a2b880a4c/orgunit/9052/memberships",
"service_versions": [
"2.0"
]
},
"https://purl.imsglobal.org/spec/lti/claim/tool_platform": {
"guid": "54fe20b5-4e8b-4ad4-a9ba-43985dc84795",
"product_family_code": "desire2learn"
}
}
-----
The response we are sending is
-----
{
"kid": "kid_2022_08_06",
"alg": "RS256"
}
{
"iss": "cee1b12b-7a51-4031-b3f3-6290de804df6",
"aud": "https://anonymoustest.brightspace.com",
"iat": 1654763362,
"exp": 1654763512,
"https://purl.imsglobal.org/spec/lti/claim/message_type": "LtiDeepLinkingResponse",
"https://purl.imsglobal.org/spec/lti/claim/version": "1.3.0",
"https://purl.imsglobal.org/spec/lti/claim/deployment_id": "ab6df953-502d-4d0e-aab4-a65a2b880a4c",
"nonce": "2432ad5c85fc",
"https://purl.imsglobal.org/spec/lti-dl/claim/content_items": [
{
"type": "ltiResourceLink",
"title": "Noticeboard test",
"url": "https://anonymous.lamsinternational.com/lams/lti/advantage",
"custom": {
"learningdesignid": "61",
"grading": "lesson",
"enablelessonintro": "true",
"lessonid": "180"
},
"window": {
"targetName": "LAMS - Noticeboard test",
"with": 1024,
"height": 500,
"windowFeatures": "resizable,scrollbars=yes,status=yes"
},
"lineItem": {
"scoreMaximum": 100,
"label": "Noticeboard test",
"resourceId": "lams_lesson_180",
"tag": "LAMS lesson grade"
},
"iframe": {
"url": "https://anonymous.lamsinternational.com/lams/lti/advantage",
"width": 1024,
"height": 500
}
}
],
"https://purl.imsglobal.org/spec/lti-dl/claim/data": "cB5tc3pFZsZlDCZH_r2q1ycSazDE6YfOdGRg6OEfRFU~"
}
----
What could be the reason for the error?
Should the audience ("aud") be https://api.brightspace.com/auth/token ?
But here is what the specification says
https://www.imsglobal.org/spec/lti-dl/v2p0#aud
and we follow it.
This thread
mentions that Brightspace "wasn't expecting a array of objects, just expecting one ltiResourceLink". But this behaviour would be inconsistent with the specification
https://www.imsglobal.org/spec/lti-dl/v2p0#content-items
which says it should be an array. Is it a bug? Implementing a workaround on our side it not that trivial.
If anyone can help, we will be very thankful.
Categories
- All Categories
- 6 Thought Leadership
- 7 Known and Fixed Issues
- 6 Product Roadmap
- 553 Archived
- 10 Accessibility
- 28 Community Corner
- 2 Welcome
- Updates
- Member Spotlights
- 4 Events
- 242 Development
- 746 Customer Enablement
- Evaluate - Assess Student Learning
- Get Comfortable with Brightspace
- Communicate - Engage with Your Students
- 1 Create - Set up your Brightspace course
- Action - Add or create student activities
- 26 Partners
- 8 Product News
- 2022
- 2022 Release Notes
- 2021 Release Notes
- 4 Training
- andycat