Classroom-Add-ons werden in einem iFrame geladen, um Endnutzern eine nahtlose und komfortable Nutzererfahrung zu bieten. Es gibt fünf verschiedene iFrame-Typen. Eine Übersicht über Zweck und Aussehen der einzelnen iFrames finden Sie auf den iFrame-Seiten im Verzeichnis „Nutzerpfade“.
Sicherheitsrichtlinien für iFrames
Entwickler müssen die Best Practices der Branche befolgen, um ihre iFrames zu schützen. Sie sollten jedoch auch bestimmte API-Interaktionen in Ihren Nutzerpfad einbeziehen, um zu bestätigen, dass Sie gültige Anmeldedaten haben und die Rolle des Nutzers im Kurs korrekt identifizieren können.
Serveranwendung konfigurieren
Zum Schutz des iFrames empfehlen wir die folgenden Serverkonfigurationen:
- HTTPS ist erforderlich. Wir empfehlen dringend, TLS 1.2 oder höher zu verwenden und HTTP Strict Transport Security (HSTS) zu aktivieren. Weitere Informationen finden Sie in diesem MDN Artikel zu Strict Transport Security.
- Aktivieren Sie Strict Content Security Policy (Strict CSP). Weitere Informationen finden Sie in diesem OWASP-Artikel und in diesem MDN-Artikel zu Content Security Policy.
- Aktivieren Sie das Attribut „Secure“ für Cookies. Weitere Informationen finden Sie im Attribut „HttpOnly“ und in diesem MDN-Artikel zu Cookies.
Suchparameter
Die iFrames übergeben wichtige Informationen als Suchparameter an das Add-on. Es gibt zwei Kategorien von Parametern: anhangsbezogene und anmeldebezogene Parameter.
Anhangsbezogene Parameter
Die anhangsbezogenen Parameter liefern dem Add-on Informationen zum Kurs, zur Aufgabe, zum Add-on-Anhang, zur Abgabe des Schülers/Studenten und zu einem Autorisierungstoken.
- Kurs-ID
Der Wert
courseIdist eine ID für den Kurs.In allen iFrames enthalten.
- Artikel-ID
Der Wert
itemIdist eine ID für dieAnnouncement,CourseWorkoderCourseWorkMaterial, an die dieser Anhang angehängt ist.In allen iFrames enthalten.
- Elementtyp
Der Wert
itemTypegibt den Ressourcentyp an, an den dieser Anhang angehängt ist. Der übergebene Stringwert ist einer der folgenden:"announcements","courseWork"oder"courseWorkMaterials".In allen iFrames enthalten.
- Anhangs-ID
Der Wert
attachmentIdist eine ID für den Anhang.In den iFrames
teacherViewUri,studentViewUriundstudentWorkReviewUrienthalten.- ID der abgegebenen Aufgabe
Der Wert
submissionIdist eine ID für die Arbeit des Schülers/Studenten. Er sollte jedoch in Kombination mitattachmentIdverwendet werden, um die Arbeit des Schülers/Studenten für eine bestimmte Aufgabe zu identifizieren.In
studentWorkReviewUrienthalten.
- Add-on-Token
Der Wert
addOnTokenist ein Autorisierungstoken, mit demaddOnAttachments.create-Aufrufe ausgeführt werden, um das Add-on zu erstellen.Im iFrame „Anhangssuche“ und im iFrame „Link-Upgrade “ enthalten.
- URL für Upgrade
Das Vorhandensein des Werts
urlToUpgradebedeutet, dass die Lehrkraft einen Link-Anhang in die Aufgabe eingefügt und zugestimmt hat, ihn in einen Add-on-Anhang zu konvertieren. Wenn Sie diese Funktion noch nicht konfiguriert haben, finden Sie in der Anleitung zum Konvertieren von Links in Add-on Anhänge weitere Informationen.Im iFrame „Link-Upgrade“ enthalten.
Anmeldebezogene Parameter
Der Suchparameter login_hint enthält Informationen zum Classroom-Nutzer, der die Add-on-Webseite besucht. Dieser Suchparameter wird in der src-URL des iFrames angegeben. Er wird gesendet, wenn der Nutzer Ihr Add-on bereits verwendet hat, um die Anmeldung für Endnutzer zu vereinfachen. Sie müssen diesen Suchparameter in Ihrer Add-on-Implementierung verarbeiten.
- Anmeldehinweis
login_hintist eine eindeutige ID für das Google-Konto des Nutzers. Nachdem sich der Nutzer zum ersten Mal in Ihrem Add-on angemeldet hat, wird der Parameterlogin_hintbei jedem weiteren Besuch Ihres Add-ons durch denselben Nutzer übergeben.Es gibt zwei mögliche Verwendungszwecke für den Parameter
login_hint:- Übergeben Sie den Wert
login_hintwährend des Authentifizierungsprozesses, damit der Nutzer seine Anmeldedaten nicht eingeben muss, wenn das Anmeldedialogfeld angezeigt wird. Der Nutzer wird nicht automatisch angemeldet. - Nachdem sich der Nutzer angemeldet hat, können Sie mit diesem Parameter den Wert mit allen Nutzern vergleichen, die sich möglicherweise bereits in Ihrem Add-on angemeldet haben. Wenn Sie eine Übereinstimmung finden, können Sie den Nutzer angemeldet lassen und die Anmeldung überspringen. Wenn der Parameter mit keinem Ihrer angemeldeten Nutzer übereinstimmt, fordern Sie den Nutzer auf, sich mit einer Google-Anmeldeschaltfläche anzumelden.
In allen iFrames enthalten.
- Übergeben Sie den Wert
iFrame „Anhangssuche“
| Dimension | Beschreibung |
|---|---|
| Erforderlich | Ja |
| URI | In den Add-on-Metadaten angegeben |
| Abfrageparameter | courseId, itemId, itemType, addOnToken und login_hint. |
| Höhe | 80% der Fensterhöhe minus 60 Pixel für den oberen Header |
| Breite | Maximal 1.600 Pixel 90% der Fensterbreite, wenn das Fenster <= 600 Pixel breit ist 80% der Fensterbreite, wenn das Fenster > 600 Pixel breit ist |
Beispielszenario für die Anhangssuche
- Ein Classroom-Add-on ist im Google Workspace Marketplace mit dem URI für die Anhangssuche
https://example.com/addonregistriert. - Eine Lehrkraft installiert dieses Add-on und erstellt eine neue Ankündigung, Aufgabe oder ein neues Material in einem ihrer Kurse. Beispiel:
itemId=234,itemType=courseWorkundcourseId=123. - Beim Konfigurieren dieses Elements wählt die Lehrkraft das neu installierte Add-on als Anhang aus.
- Classroom erstellt einen iFrame, dessen `src`-URL auf
https://example.com/addon?courseId=123&itemId=234&itemType=courseWork&addOnToken=456festgelegt ist.- Die Lehrkraft wählt im iFrame einen Anhang aus.
- Nach der Auswahl des Anhangs sendet das Add-on eine
postMessagean Classroom, um den iFrame zu schließen.
iFrames „teacherViewUri“ und „studentViewUri“
| Dimension | Beschreibung |
|---|---|
| Erforderlich | Ja |
| URI | teacherViewUri oder studentViewUri |
| Abfrageparameter | courseId, itemId, itemType, attachmentId und login_hint. |
| Höhe | 100% der Fensterhöhe minus 140 Pixel für den oberen Header |
| Breite | 100% der Fensterbreite |
iFrame „studentWorkReviewUri“
| Dimension | Beschreibung |
|---|---|
| Erforderlich | Nein (gibt an, ob es sich um einen Anhang vom Typ „Aktivität“ handelt) |
| URI | studentWorkReviewUri |
| Abfrageparameter | courseId, itemId, itemType, attachmentId, submissionId und login_hint. |
| Höhe | 100% der Fensterhöhe minus 168 Pixel für den oberen Header |
| Breite | 100% der Fensterbreite minus die Breite der Seitenleiste<> Die Seitenleiste ist im erweiterten Zustand 312 Pixel und im minimierten Zustand 56 Pixel breit. |
iFrame „Link-Upgrade“
| Dimension | Beschreibung |
|---|---|
| Erforderlich | Ja, wenn das Konvertieren von Links in Add-on-Anhänge von Ihrem Add-on unterstützt wird. |
| URI | In den Add-on-Metadaten angegeben |
| Abfrageparameter | courseId, itemId, itemType, addOnToken, urlToUpgrade und login_hint. |
| Höhe | 80% der Fensterhöhe minus 60 Pixel für den oberen Header |
| Breite | Maximal 1.600 Pixel 90% der Fensterbreite, wenn das Fenster <= 600 Pixel breit ist 80% der Fensterbreite, wenn das Fenster > 600 Pixel breit ist |
Beispielszenario für das Link-Upgrade
- Ein Classroom-Add-on ist mit dem URI für das Link-Upgrade
https://example.com/upgraderegistriert. Sie haben die folgenden Host- und Pfad präfixmuster für Link-Anhänge angegeben, die Classroom in Add-on-Anhänge konvertieren soll:- Der Host ist
example.comund das Pfadpräfix ist/quiz.
- Der Host ist
- Eine Lehrkraft erstellt eine neue Ankündigung, Aufgabe oder ein neues Material in einem ihrer Kurse. Beispiel:
itemId=234,itemType=courseWorkundcourseId=123. - Eine Lehrkraft fügt im Dialogfeld „Link-Anhang“ einen Link ein, z. B.
https://example.com/quiz/5678, der mit einem von Ihnen angegebenen URL-Muster übereinstimmt. Die Lehrkraft wird dann aufgefordert, den Link in einen Add-on-Anhang zu konvertieren. Classroom startet den iFrame „Link-Upgrade“ mit der URL set to
https://example.com/upgrade?courseId=123&itemId=234&itemType=courseWork&addOnToken=456&urlToUpgrade=https%3A%2F%2Fexample.com%2Fquiz%2F5678.Sie werten die im iFrame übergebenen Suchparameter aus und rufen den
CreateAddOnAttachmentEndpunkt auf. Beachten Sie, dass der SuchparameterurlToUpgradeURI-codiert ist, wenn er im iFrame übergeben wird. Sie müssen den Parameter decodieren, um ihn in seiner ursprünglichen Form zu erhalten. In JavaScript gibt es beispielsweise die FunktiondecodeURIComponent().Wenn ein Add-on-Anhang erfolgreich aus einem Link erstellt wurde, senden Sie eine
postMessagean Classroom, um den iFrame zu schließen.
iFrame schließen
Der iFrame kann über das Lerntool geschlossen werden, indem ein postMessage mit
der Nutzlast {type: 'Classroom', action: 'closeIframe'} gesendet wird.
Classroom akzeptiert diese postMessage nur vom Hostnamen und Port, die dem ursprünglich geöffneten URI entsprechen.
<button id="close">Send message to close iframe</button>
<script>
document.querySelector('#close')
.addEventListener('click', () => {
window.parent.postMessage({
type: 'Classroom',
action: 'closeIframe',
}, '*');
});
</script>
iFrame über den iFrame schließen
Die Domain und der Port der Seite, die das postMessage-Ereignis sendet, müssen mit der Domain und dem Port des URI übereinstimmen, der zum Starten des iFrames verwendet wurde. Andernfalls wird die Nachricht ignoriert. Eine mögliche Lösung besteht darin, zu einer Seite in der ursprünglichen Domain zurückzuleiten, die nichts weiter tut, als das postMessage-Ereignis zu senden.
iFrame über einen neuen Tab schließen
Schutzmaßnahmen für domänenübergreifende Anfragen verhindern, dass dies funktioniert. Eine mögliche Lösung besteht darin, die Kommunikation zwischen dem iFrame und dem neuen Tab selbst zu verarbeiten und den iFrame letztendlich für das Auslösen des postMessage-Ereignisses zum Schließen verantwortlich zu machen. Außerdem wird der Hyperlink „In [Partnername] öffnen“ entfernt, damit Nutzer in naher Zukunft keine Tabs auf diese Weise erstellen.
Einschränkungen
Alle iFrames werden mit den folgenden Sandbox-Attributen geöffnet:
allow-popupsallow-popups-to-escape-sandboxallow-formsallow-scriptsallow-storage-access-by-user-activationallow-same-origin
und der folgenden Feature-Richtlinie:
allow="microphone *"
Drittanbieter-Cookies blockieren
Wenn Drittanbieter-Cookies blockiert werden, ist es schwierig, eine angemeldete Sitzung in einem iFrame aufrechtzuerhalten. Unter https://www.cookiestatus.com finden Sie Informationen zum aktuellen Stand der Cookie-Blockierung in verschiedenen Browsern. Dieses Problem betrifft nicht nur Google Classroom-Add-ons, sondern alle Websites, die iFrames von Drittanbietern verwenden. Viele unserer Partner sind bereits auf dieses Problem gestoßen.
Einige allgemeine Lösungen sind:
- Öffnen Sie einen neuen Tab, um das Cookie im Kontext der eigenen Website zu erstellen. Einige Browser gewähren Zugriff auf Cookies, die im Kontext der eigenen Website erstellt wurden, auch wenn sie im Kontext einer Drittanbieter-Website verwendet werden.
- Bitten Sie den Nutzer, Drittanbieter-Cookies zuzulassen. Das ist möglicherweise nicht immer für alle Nutzer möglich.
- Entwickeln Sie Single-Page-Webanwendungen, die nicht auf Cookies angewiesen sind.
In zukünftigen Browserversionen werden voraussichtlich weitere Cookie-Einschränkungen eingeführt. Erstellen Sie Feature-Anfragen um Google Feedback dazu zu geben, wie der Aufwand für Partner reduziert werden kann.
Add-ons mithilfe von regulären Ausdrücken für URLs auffindbar machen
Lehrkräfte erstellen häufig Aufgaben mit Link-Anhängen. Um die Verwendung Ihres Add-ons zu fördern, können Sie reguläre Ausdrücke angeben, die mit URLs von Ressourcen übereinstimmen, auf die in Ihrem Add-on zugegriffen werden kann. Wenn eine Lehrkraft einen Link anhängt, der mit einem Ihrer regulären Ausdrücke übereinstimmt, wird ein Dialogfeld angezeigt, in dem sie aufgefordert wird, Ihr Add-on auszuprobieren. Das Dialogfeld wird nur angezeigt, wenn das Add-on bereits für ihr Konto installiert ist.
Wenn Sie Lehrkräften diese Funktion zur Verfügung stellen möchten, geben Sie Ihren Google-Ansprechpartnern die entsprechenden regulären Ausdrücke. Wenn die von Ihnen angegebenen regulären Ausdrücke zu allgemein sind oder mit einem anderen Add-on in Konflikt geraten, werden sie möglicherweise so geändert, dass sie spezifischer oder eindeutiger sind.
Abbildung 1. Lehrkraft wählt einen Link-Anhang für eine neue Aufgabe aus.
Abbildung 2. Lehrkraft fügt einen Link aus einer Drittanbieterquelle ein. Die Lehrkraft hat das Classroom-Add-on des Drittanbieters bereits installiert.
Abbildung 3. Das interaktive Dialogfeld, das der Lehrkraft angezeigt wird, wenn der eingefügte Link mit einem regulären Ausdruck übereinstimmt, der vom Drittanbieter-Entwickler angegeben wurde.
Wenn eine Lehrkraft im Pop-up-Fenster in Abbildung 3 die Option „Jetzt testen“ auswählt, wird sie zum iFrame „Anhangssuche“ Ihres Add-ons weitergeleitet.