Skip to content

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

ParameterWaarde
isshttps://account.onlineacademy.nl
target_link_urihttps://example.com/launch/
login_hint12345
client_id71bafed5-5db8-483a-bc91-0531e651e57d
lti_deployment_idf800ca6c-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:

ParameterWaarde
client_id71bafed5-5db8-483a-bc91-0531e651e57d
isshttps://issuer.example.com/
response_typeid_token
scopeopenid profile email
redirect_urihttps://example.com/launch
stateb4523079761ad690228256c7909f0d140d89b8aedbb04c8685254
nonce1ae28c4dff14531eaf5a82db859e526ead88a83db05deb9c7ff43f81
login_hint[Gebruikers-id]
promptnone
response_modeform_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:

json
{
  "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:

json
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:

json
{
  "activityProgress": "InProgress",
  "scoreGiven": 0.2,
  "scoreMaximum": 1,
  "timestamp": "YYYY-MM-DDTHH:MM:SS.MS\u002B00:00",
  "userId": "12345"
}

Voorbeeldobject voltooide cursus:

json
{
  "activityProgress": "Completed",
  "scoreGiven": 1,
  "scoreMaximum": 1,
  "timestamp": "YYYY-MM-DDTHH:MM:SS.MS\u002B00:00",
  "userId": "12345"
}