Page tree
Skip to end of metadata
Go to start of metadata

Hintergrund

Um die verfügbaren Materialien für den Unterricht zu erweitern, bietet die HPI Schul-Cloud die Möglichkeit, Inhalte von Drittanbietern einzubinden. Dabei kann es sich sowohl um statische Medien als auch um Software handeln. Sobald Software sich an ihren Nutzer anpassen kann, muss sie ihren Benutzer identifizieren. Da dessen Identität bereits der HPI Schul-Cloud bekannt ist, ist es sinnvoll, diese Identität dem Drittanbieter beim Abruf des Inhaltes mitzuteilen, sprich einen Single-Sign-On durchzuführen. Dadurch wird vermieden, dass der Benutzer sich dort bei jeder Benutzung neu einloggen oder initial registrieren muss. Die Datenschutz-Bestimmungen sehen jedoch vor, dass nur die zur Nutzung notwendigen Daten weitergegeben werden.

Zur Personalisierung von Software reicht eine eindeutige Kennung aus. Diese Kennung wird durch das Pseudonym gewährleistet. Dieses ist eine eindeutige Zeichenfolge, die die Identität des Nutzers enthält, jedoch keine Rückschlüsse auf dessen wahre Identität zulässt. Aus Datenschutz-Gründen hat der gleiche Benutzer bei jedem Drittanbieter ein unterschiedliches Pseudonym. Im Folgenden geht es um den Transfer von Identitätsinformationen aus der HPI Schul-Cloud an Bildungsinhalte von Drittanbietern sowie damit verbundene Schnittstellen.

Single-Sign-On-Standards

Der Industrie-Standard zur Authentifizierung bei Drittanbietern ist OAuth2 in Verbindung mit OpenID. Dabei ist die Identität die Ressource, die der Provider dem Client zum Lesezugriff freigibt. Die HPI Schul-Cloud unterstützt den Single-Sign-On über OAuth2.

Im Bildungsbereich ist zudem der Standard Learning Tools Interoperability (LTI) des IMS Global Learning Consortium (IMS) verbreitet. Die HPI Schul-Cloud unterstützt die Versionen 1.1 und 1.3 dieses Standards.

LTI 1.1

Da IMS diesen Standard nicht mehr empfiehlt, wird er hier nur kurz der Vollständigkeit halber beschrieben. Ein Implementation Guide findet sich hier.

Die Sicherheit wird über OAuth1.0 gewährleistet. Deshalb muss der Drittanbieter initial der HPI Schul-Cloud einen key und ein zugehöriges secret nennen. Wird das Tool aufgerufen, so sendet die HPI Schul-Cloud als Tool Consumer eine LTI Message des Typs basic-lti-launch-request an den Drittanbieter als Tool Provider, wobei im Feld user_id das Pseudonym enthalten ist.

Die HPI Schul-Cloud benötigt vom Drittanbieter für diesen Standard die URL des Inhaltes, den key sowie das secret.

LTI 1.3

Die Spezifikation ist seit dem 16. April 2019 öffentlich und findet sich hier. In der neuen Terminologie ist die HPI Schul-Cloud die Platform und der Inhalt des Drittanbieters das Tool. Die Sicherheit wird über asymmetrische Schlüssel sichergestellt. Die HPI Schul-Cloud nennt dem Drittanbieter ihren Public Key und der Drittanbieter seinen der Schul-Cloud. Jede LTI Message wird in einen JSON Web Token (JWT) enkodiert und dieser mit dem Private Key signiert und somit kann die Gegenseite die Authentizität der empfangenen Nachrichten prüfen. Der JWT enthält Felder analog zu OAuth2. Im Feld sub befindet sich dementsprechend das Pseudonym. Dieses kann also der initialen LTI Message vom Typ LtiResourceLinkRequest entnommen werden.

Die HPI Schul-Cloud benötigt vom Drittanbieter für diesen Standard die URL des Inhaltes und den Public Key des Tools.

Die HPI Schul-Cloud unterstützt bereits Deep Linking für LTI1.3. Die Deep-Linking-Spezifikation findet sich hier.

LTI 1.3 ist aktuell in der Schul-Cloud nicht integriert.

OAuth2

Die Spezifikation von OAuth2 kann hier eingesehen werden. Die Spezifikation von OpenID 1.0 befindet sich hier. Die HPI Schul-Cloud verwendet den Authorization Code Flow. Der Auth-Endpunkt lautet bei der HPI Schul-Cloud /hydra/oauth2/auth und der Token-Endpunkt /hydra/oauth2/token. Es muss der Scope openid angefordert werden. Für OAuth2 teilt die HPI Schul-Cloud als Provider dem Client zunächst seine client_id zu. Für diese muss der stets die Identität angefordert werden. Die HPI Schul-Cloud fragt den Nutzer nach seinem Einverständnis, sein Pseudonym an den Drittanbieter weiterzugeben und merkt sich diese Einwilligung (den consent). Der Access Token, der vom Token-Endpunkt zurückgegeben wird, wird vom Drittanbieter dazu verwendet, um beim Introspect-Endpunkt unter /hydra/userinfo das Pseudonym abzurufen, das sich im Feld sub befindet.

Die HPI Schul-Cloud benötigt vom Drittanbieter für diesen Standard die URL des Inhaltes und die return_url, zu der der Benutzer nach seiner Einwilligung geleitet wird.

Rostering: Bei der Authentifizierung via OAuth2 ist es möglich, weitere Informationen über den Kurs des Benutzers zu erhalten. Die Auflistung dieser Kurs-Informationen nennt sich Roster.

  • GET {SC_DOMAIN}/roster/users/${PSEUDONYM}/metadata
  • GET {SC_DOMAIN}/roster/users/${PSEUDONYM}/groups
  • GET {SC_DOMAIN}/roster/groups/${GROUP_ID}

Jeder Endpunkt ist geschützt. Die Autorisierung funktioniert, indem der Access Token im Authorization Header mitgegeben wird.

Benutzer-Oberfläche

Zurzeit werden die interaktiven Inhalte ausschließlich in einen Kurs eingebunden, wo sie unter dem Tab Tools für die Benutzer dieses Kurses abrufbar sind. Bei Auswahl des Tools wird dieses in einem Iframe angezeigt, das den Großteil des Bildschirms einnimmt, jedoch vom Benutzer auch in den Vollbild-Modus geschaltet werden kann.

De-Pseudonymisierung

Falls der Nutzername in der Anwendung angezeigt werden soll, so kann dies über ein Iframe geschehen. Dieses zeigt eine Seite der HPI Schul-Cloud an. Damit dies funktioniert, muss der Benutzer jedoch noch in der HPI Schul-Cloud eingeloggt sein (was jedoch im Regelfall gewährleistet ist).

Der Anbieter muss in seinen Code folgendes integrieren.

<iframe 
    src={`{SC_DOMAIN}/account/username/${PSEUDONYM}`}
    title="username"
    style={{ height: '26px', width: '180px', border: 'none' }}
/>

Unter OAuth2 ist es auch möglich, dass das Pseudonym bereits die gesamte URL des Iframes enthält und somit nur das Pseudonym als src gesetzt werden muss. Dies muss im Vorfeld in der HPI Schul-Cloud konfiguriert werden.

Beispiel-Anwendung

Zur Demonstration der Schnittstellen hat die HPI Schul-Cloud eine Beispiel-Anwendung erstellt. Diese findet sich hier. Diese bietet Authentifizierung sowohl über OAuth2 als auch LTI 1.3. Außerdem nutzt sie Roster-Daten bei OAuth2 und bietet Deep Linking unter LTI.

Die Einwilligung:



Eine Seite als Inhalt auswählen, über den grünen Button (Deep Linking).


Ansicht als Schüler:


  • No labels