LTI 1.3 Tool Request Flow
In het kader van LTI 1.3 fungeert SkillsTown als het Platform en treedt de klant op als de Tool. Deze pagina geeft een overzicht van de verzoekstroom.
Deze stroom moet worden gevolgd als uw cursussen worden geïmplementeerd in Inspire.
Inloggen Tool
Als eerste stap zal het Platform (SkillsTown) de verstrekte inlog-URL oproepen met behulp van POST.
Via dit verzoek sturen we de volgende parameters mee: iss, client_id, login_hint, target_link_uri en lti_message_hint
Voorbeeldwaarden
| Parameter | Waarde |
|---|---|
| iss | https://account.onlineacademy.nl |
| target_link_uri | https://example.com/launch/ |
| login_hint | 12345 |
| client_id | 71bafed5-5db8-483a-bc91-0531e651e57d |
| lti_deployment_id | f800ca6c-a62f-4248-bfaf-fe327381169a |
| lti_message_hint | {"course_id":"xxxxx","course_version_id":xxxxx,"deployment_id":"f800ca6c-a62f-4248-bfaf-fe327381169a","test":false,"messageType":"LtiResourceLinkRequest","company_name":"Example Company","content_version":null,"course_type":"1","culture":"nl-NL"} |
Deze waarden worden toegevoegd aan het verzoeklichaam.
Autorisatie Platform
SkillsTown verwacht een verzoek naar de Autorisatie-URL https://account.onlineacademy.nl/connect/authorize met de volgende queryparameters:
| Parameter | Waarde |
|---|---|
| client_id | 71bafed5-5db8-483a-bc91-0531e651e57d |
| iss | https://issuer.example.com/ |
| response_type | id_token |
| scope | openid profile email |
| redirect_uri | https://example.com/launch |
| state | b4523079761ad690228256c7909f0d140d89b8aedbb04c8685254 |
| nonce | 1ae28c4dff14531eaf5a82db859e526ead88a83db05deb9c7ff43f81 |
| login_hint | [Gebruikers-id] |
| prompt | none |
| response_mode | form_post |
| lti_message_hint | {"course_id":"xxxxx","course_version_id":xxxxx,"deployment_id":"f800ca6c-a62f-4248-bfaf-fe327381169a","test":false,"messageType":"LtiResourceLinkRequest","company_name":"Example Company","content_version":null,"course_type":"1","culture":"nl-NL"} |
Tool-URL
Het Platform zal vervolgens het JWT-token construeren en doorverwijzen naar de verstrekte Tool-URL, waarbij het JWT-token aan de payload wordt toegevoegd.
Voorbeeld JWT-payload
Het volgende is een voorbeeldobject dat we als JWT in de payload zullen verzenden:
{
"nbf": 1719477033,
"exp": 1719477333,
"iss": "https://account.onlineacademy.nl",
"aud": "Example Company",
"nonce": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"iat": 1719477033,
"sid": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"sub": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"auth_time": 1719402633,
"idp": "local",
"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://api.onlineacademy.nl/catalog/v1/lti-results/course-version/XXXXX/scores",
"lineitem": "https://api.onlineacademy.nl/catalog/v1/lti-results/course-version/XXXXX/scores"
},
"https://purl.imsglobal.org/spec/lti/claim/custom": {
"course_id": "XXXX-Course-Identifier_XXXX"
}
}Naast course_id ondersteunt Inspire ook deployment_id, id en target_link_uri als cursus-ID-parameters. De cursus-ID wordt dan als volgt verstrekt in het JWT:
deployment_id:
"https://purl.imsglobal.org/spec/lti/claim/deployment_id":
"XXXX-Course-Identifier_XXXX",
id:
"https://purl.imsglobal.org/spec/lti/claim/custom": {
"id": "XXXX-Course-Identifier_XXXX"
}
target_link_uri:
"https://purl.imsglobal.org/spec/lti/claim/target_link_uri":
"https://example.com/lti/provide/course/12345"De cursus moet nu zichtbaar zijn in het platform.
Voortgang
Telkens wanneer de gebruiker voortgang maakt, verwachten we dat de Tool een POST-verzoek stuurt naar de lineitem-URL die wordt verstrekt in het ToolLaunch JWT-token.
Voorbeeldobject onvoltooide cursus:
{
"activityProgress": "InProgress",
"scoreGiven": 0.2,
"scoreMaximum": 1,
"timestamp": "YYYY-MM-DDTHH:MM:SS.MS\u002B00:00",
"userId": "12345"
}Voorbeeldobject voltooide cursus:
{
"activityProgress": "Completed",
"scoreGiven": 1,
"scoreMaximum": 1,
"timestamp": "YYYY-MM-DDTHH:MM:SS.MS\u002B00:00",
"userId": "12345"
}