Im Kirchhoff-Intranet sollten Dokumente aus SharePoint direkt im TYPO3-Frontend auftauchen — aktuell, durchsuchbar, ohne dass jemand etwas doppelt pflegt. Die Verbindung läuft über Microsoft Graph. Klingt geradlinig, hat aber drei Stolpersteine, die man besser vorher kennt.
Auth: App-only, nicht im Namen eines Users
Ein Intranet liest Inhalte serverseitig — also App-only-Authentifizierung über den Client-Credentials-Flow, nicht delegiert. Token holen, im Cache halten, vor Ablauf erneuern. Wichtig: die App-Registrierung nur mit den Berechtigungen ausstatten, die wirklich gebraucht werden (Sites.Read.All reicht meist).
Der Trick mit den Drive-IDs
Graph adressiert Dateien nicht über Pfade, sondern über Site- und Drive-IDs. Diese IDs sind stabil, aber nicht offensichtlich — man löst sie einmal aus dem Site-Namen auf und legt sie in die Konfiguration. Wer bei jedem Request die ID neu auflöst, verschenkt einen kompletten Roundtrip.
GET /sites/{hostname}:/sites/{site-path}
→ liefert die site-id
GET /sites/{site-id}/drives
→ liefert die drive-id (einmal merken!)Caching ist hier kein Bonus, sondern Pflicht
Graph hat Rate Limits, und ein Intranet-Aufmacher, der bei jedem Seitenaufruf live abfragt, wird langsam und fragil. Wir cachen die Datei-Listen mit kurzer TTL und invalidieren gezielt, wenn sich etwas ändert. Das Frontend bleibt schnell, die API entspannt.
- Token im Server-Cache, Erneuerung mit Puffer vor Ablauf
- Drive-IDs als Konfiguration, nicht als Laufzeit-Lookup
- Datei-Listen mit kurzer TTL cachen, Fehlerfälle leise abfangen
Das Ergebnis: SharePoint-Dokumente erscheinen im Intranet, als wären sie schon immer dort gewesen — und niemand muss zwei Systeme pflegen.