Zum Inhalt springen

Microsoft Entra ID Authentifizierung

SwissMentor kann Benutzer über Microsoft Entra ID (vormals Azure Active Directory) authentifizieren.

In SwissMentor müssen folgende Informationen hinterlegt werden:

  • Application (client) ID
  • Directory (tenant) ID
  • Client secret
  • Anmelden im Microsoft Entra Admin Center (entra.microsoft.com)
  • Navigieren auf Ihre Microsoft Entra ID Domäne
  • In Ihrer Domäne App registrations öffnen. _ Unter Name einen beliebigen Namen eingeben _ Wählen Sie bei Supportet account types, welche Benutzer-Arten sich bei SwissMentor anmelden können.
  • Klicken Sie auf Register

azure-ad.png

  • Gehen Sie auf Certificates & secrets
  • Klicken Sie auf New client secret
  • Geben Sie eine Beschreibung ein und wählen Sie eine Lebensdauer. Bei einer beschränkten Lebensdauer muss das Secret in SwissMentor regelmässig aktualisiert werden.
  • Klicken Sie Add
  • Kopieren Sie das erzeugte Client secret.

Die Entra-Anmeldung benötigt ein zufälliges JWT-Secret mit mindestens 32 Zeichen. Alle API-Instanzen einer SwissMentor-Installation müssen dasselbe Secret verwenden.

Bei einer Helm-Installation kann das Chart das Secret erzeugen und automatisch an die API-Instanzen übergeben:

jwtAccessTokenSecret:
generate: true

Alternativ verweist jwtAccessTokenSecret.existingSecret auf ein verwaltetes Kubernetes Secret mit dem Schlüssel jwt-access-token-secret. Ausserhalb von Helm wird das Secret über SM_AUTHENTICATION_JWT_ACCESS_TOKEN_SECRET bereitgestellt.

SwissMentor verwendet dieses Secret auch für die Verschlüsselung der Microsoft-Refresh-Tokens. Der JWT-Ersatzschlüssel aus der Datenbank kann dafür nicht verwendet werden.

SwissMentor verwendet den Entra-v2-Anmeldefluss mit den Berechtigungen openid, profile und offline_access. Die Zustimmung zu offline_access erlaubt SwissMentor, die Microsoft-Sitzung im Hintergrund erneut zu prüfen. Je nach Richtlinie des Tenants muss ein Administrator diese Zustimmung erteilen.

SwissMentor prüft die Signatur der Microsoft-ID-Tokens sowie die zugehörige Anwendung, den konfigurierten Tenant und den Aussteller. Als Tenant muss ein konkretes Verzeichnis über seine Directory-ID oder seinen Tenant-Domänennamen angegeben sein.

Bei der ersten Anmeldung wird ein Azure-Benutzer über seinen SwissMentor-Benutzernamen der Microsoft-UPN zugeordnet. Danach bleibt die Zuordnung über Tenant-ID und Object-ID erhalten, auch wenn sich die Microsoft-UPN ändert. Ein anderer Microsoft-Account mit derselben UPN kann eine vorhandene Zuordnung nicht übernehmen.

Vor jeder Erneuerung eines SwissMentor-Access-Tokens wird die zugehörige Microsoft-Sitzung serverseitig geprüft. Eine von Entra bestätigte Kontosperre, Kontolöschung oder ein Sitzungswiderruf beendet die betroffene lokale Refresh-Sitzung. Das gilt auch für die Rückkehr zu einer Azure-AD-Admin-Sitzung nach einer Impersonation.

Bereits ausgestellte SwissMentor-Access-Tokens bleiben bis zu ihrem Ablauf gültig. Die maximale Restlaufzeit wird durch system.auth.provider.jwt.jwtTokenLifeTimeMinutes bestimmt. Hinzu kommt die Zeit, bis Microsoft eine Änderung durchsetzt. Erfolgreiche Providerprüfungen werden nicht über mehrere Refresh-Anfragen zwischengespeichert.

Ist Microsoft vorübergehend nicht erreichbar, stellt SwissMentor keinen neuen Access-Token aus. Der Browser versucht die Prüfung nach 30 Sekunden erneut; bei einer von Microsoft vorgegebenen Wartezeit kann dies bis zu fünf Minuten dauern. Die Sitzung wird wegen eines solchen technischen Fehlers nicht dauerhaft gesperrt.

Microsoft-Refresh-Tokens werden ausschliesslich verschlüsselt auf dem Server gespeichert und an die jeweilige lokale Sitzung gebunden. Eine Änderung des JWT-Secrets oder der Entra-App-/Tenant-Zuordnung erfordert eine erneute Anmeldung.