Diese Anleitung beschreibt, wie ein dediziertes Microsoft-Dienstkonto in elearnio konfiguriert wird. Das Dienstkonto ermöglicht es elearnio, Outlook-Kalendertermine zu erstellen und zu aktualisieren sowie - optional - Microsoft Teams-Meeting-Links zu generieren, ohne mandantenweiten Zugriff zu benötigen.
Folgende Informationen müssen vor der Konfiguration bereitstehen:
| Information | Beschreibung |
| Account ID | Microsoft-Verzeichnis-ID, zu finden im Azure/Entra Admin Center |
| Client ID | App-ID aus der registrierten Azure/Entra App |
| Secret | Geheimer Clientschlüssel aus der registrierten Azure/Entra App |
| Dienstkonto E-Mail | Das Microsoft-Konto, das elearnio stellvertretend verwenden soll |
ℹ️ Randnotiz: Das Dienstkonto benötigt ein vollwertiges Microsoft 365-Postfach (Exchange Online-Lizenz). Ist zusätzlich das Feature "Microsoft Teams - Link Erstellung aktivieren" eingeschaltet, braucht das Dienstkonto außerdem eine Teams-Lizenz, da es sonst keine Online-Meetings erstellen kann.
AADSTS50011: The redirect URI ... does not match the redirect URIs configured for the application fehl. Die Fehlermeldung von Microsoft zeigt dabei exakt an, welche Redirect-URI elearnio tatsächlich sendet - dieser Wert muss eins zu eins in Azure hinterlegt werden.Nach der Registrierung auf der Übersichtsseite folgende Werte notieren:
ℹ️ Azure zeigt auf der Übersichtsseite zusätzlich eine Objekt-ID an. Diese wird in elearnio nicht benötigt - nur Anwendungs-ID und Verzeichnis-ID sind relevant.
ℹ️ Wir empfehlen, die Gültigkeit des Schlüssels auf mindestens 12 Monate zu setzen. Nach Ablauf muss ein neuer Schlüssel erzeugt und in elearnio hinterlegt werden, da die Integration sonst nicht mehr funktioniert.
⚠️ Microsoft informiert hierzu standardmäßig nicht automatisch per E-Mail über das Ablaufdatum - das liegt an Azure/Entra selbst, nicht an elearnio. Bitte intern eine eigene Erinnerung setzen.
| Feature | Benötigte delegierte Berechtigungen |
| Microsoft Outlook Integration | User.Read, User.Read.All, Calendars.ReadWrite |
| Microsoft Teams - Link Erstellung | Calendars.ReadWrite, OnlineMeetings.ReadWrite |
| Verfügbarkeitsprüfung | Keine zusätzlichen - nutzt dieselben Berechtigungen wie Microsoft Outlook Integration (User.Read, User.Read.All, Calendars.ReadWrite) |
| Meeting Räume buchen | Place.Read.All |
ℹ️ offline_access muss nicht separat hinzugefügt werden. Microsoft gewährt diese Berechtigung automatisch, sobald irgendeine andere delegierte Berechtigung zugestimmt wurde - sie ist Voraussetzung für die Ausstellung eines Refresh Tokens (siehe Abschnitt "Token-Verwaltung"), erscheint aber bewusst nicht als eigener Eintrag in der API-Berechtigungen-Liste.
Je nach den Standardrichtlinien des Mandanten verlangen einige der oben genannten Berechtigungen keine zwingende Administratorzustimmung (z. B. Calendars.ReadWrite, User.Read, User.Read.All, OnlineMeetings.ReadWrite), während andere - insbesondere Place.Read.All - grundsätzlich eine explizite Zustimmung benötigen, da sie über die Daten der anmeldenden Person hinausgehen.
Wir empfehlen trotzdem, für alle konfigurierten Berechtigungen die Administratorzustimmung zu erteilen, bevor die einmalige Anmeldung in Schritt 7 durchgeführt wird:
Gründe für diese Empfehlung:
Die Authentifizierung in Schritt 7 erfolgt über einen interaktiven OAuth 2.0-Login mit den echten Zugangsdaten des Dienstkontos. Aus Sicht von Microsoft Entra verhält sich das Dienstkonto dabei wie ein normales, sich anmeldendes Benutzerkonto - nicht wie ein Service Principal, der automatisch von Conditional-Access-Richtlinien ausgenommen ist.
Daraus ergibt sich:
Empfehlung: Das Dienstkonto wie andere Integrations- bzw. Automatisierungskonten behandeln und - falls im Unternehmen üblich - von Richtlinien ausschließen, die eine wiederholte interaktive Anmeldung erzwingen. Die endgültige Entscheidung liegt beim jeweiligen IT-/Sicherheitsteam des Kunden.
| Feld | Beschreibung |
| Name | Frei wählbare Bezeichnung der Integration |
| Art | Microsoft Graph API Service Account auswählen |
| Client ID | App-ID aus der Azure-Registrierung (Schritt 1) |
| Secret | Geheimer Clientschlüssel (Schritt 2) |
Account ID | Microsoft-Verzeichnis-ID (Schritt 1) |
Dienstkonto E-Mail | E-Mail-Adresse des dedizierten Dienstkontos |
Es stehen vier unabhängige Features zur Verfügung. Alle vier sowie das Feld Präfix des Kalendereintrags sind unabhängig vom Status der einzelnen Features sichtbar.
Was passiert: elearnio erstellt und aktualisiert Kalendertermine im Outlook-Kalender des Dienstkontos. Trainer:innen und Teilnehmende werden automatisch als Teilnehmer hinzugefügt.
Benötigte Berechtigungen (siehe Schritt 3): User.Read, User.Read.All, Calendars.ReadWrite
Präfix des Kalendereintrags: Optionales Feld, das jedem von dieser Integration erstellten Kalendertermin als Präfix vorangestellt wird (z. B. [elearnio] ). Nützlich, um Termine verschiedener Integrationen oder Mandanten im Kalender des Dienstkontos auseinanderzuhalten.
Was passiert: Für Kalendertermine wird automatisch ein Microsoft Teams-Meeting-Link generiert. Trainer:innen werden dabei als Co-Hosts des Meetings eingetragen.
Benötigte Berechtigungen (siehe Schritt 3): Calendars.ReadWrite, OnlineMeetings.ReadWrite
Was passiert: Verfügbarkeitsprüfung von Trainer:innen für Termine.
Benötigte Berechtigungen: Keine zusätzlichen - nutzt dieselben Berechtigungen wie Microsoft Outlook Integration (User.Read, ).User.Read.All, Calendars.ReadWrite
Was passiert: Ressourcenplanung / Raumbuchung über Microsoft.
Benötigte Berechtigungen (siehe Schritt 3): Place.Read.All
Die Authentifizierung erfolgt einmalig durch eine administrierende Person mit den Anmeldedaten des Dienstkontos.
Ablauf:
Hinweis: Die Einstellungsseite bleibt nach dem Speichern geöffnet, damit eventuelle Fehler direkt korrigiert werden können.
elearnio übernimmt die Token-Verwaltung automatisch:
Eine manuelle Erneuerung der Tokens ist nicht erforderlich, sofern keine Conditional-Access-Richtlinie (siehe Schritt 4) den Refresh Token vorzeitig invalidiert.
| Problem | Ursache | Lösung |
| Integration funktioniert nicht trotz korrekter ID/Secret | Wert des Secret wurde mit dessen ID verwechselt | In Azure ein neues Secret erzeugen und den Wert kopieren |
| Falsche ID in elearnio eingetragen | Objekt-ID statt Anwendungs- oder Verzeichnis-ID verwendet | Nur Anwendungs-ID (Client ID) und Verzeichnis-ID (Account ID) verwenden |
| Authentifizierung schlägt fehl | Die im Microsoft-Login-Fenster angemeldete Person entspricht nicht der konfigurierten Dienstkonto E-Mail | Mit den korrekten Zugangsdaten des Dienstkontos erneut anmelden |
| Wiederholte Aufforderung zur erneuten Anmeldung | Eine Conditional-Access-Richtlinie invalidiert den Refresh Token vorzeitig | Richtlinie für das Dienstkonto anpassen (siehe Schritt 4) |
| Login-Vorgang bricht mit Zustimmungsdialog ab | Administratorzustimmung wurde nicht erteilt | Schritt 3 ("Administratorzustimmung erteilen") nachholen |
Fehler AADSTS50011: The redirect URI ... does not match | Falsche Redirect-URI in Azure hinterlegt (z. B. Academy-URL statt Backend-Callback-URL) | In Azure unter Authentifizierung exakt https://elearnio.net/backend/api/v1/microsoft_oauth/callback als Redirect-URI hinterlegen (siehe Schritt 1) |