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"
}