Teilen über


Übersicht über benutzerdefinierte Authentifizierungserweiterungen

Dieser Artikel enthält eine allgemeine, technische Übersicht über benutzerdefinierte Authentifizierungserweiterungen für Microsoft Entra ID. Mit benutzerdefinierten Authentifizierungserweiterungen können Sie die Microsoft Entra-Authentifizierungserfahrung durch eine Integration mit externen Systemen anpassen.

Das folgende Diagramm zeigt den Anmeldeflow, der in eine benutzerdefinierte Authentifizierungserweiterung integriert ist.

Diagramm, das ein Token zeigt, das mit Ansprüchen aus einer externen Quelle erweitert wird

  1. Ein Benutzer versucht, sich bei einer App anzumelden, und wird zur Microsoft Entra-Anmeldeseite umgeleitet.
  2. Sobald ein Benutzer einen bestimmten Schritt in der Authentifizierung abgeschlossen hat, wird ein Ereignislistener ausgelöst.
  3. Ihre benutzerdefinierte Authentifizierungserweiterung sendet eine HTTP-Anforderung an Ihren REST-API-Endpunkt. Die Anforderung enthält Informationen über das Ereignis, das Benutzerprofil, Sitzungsdaten und andere Kontextinformationen.
  4. Die REST-API führt einen benutzerdefinierten Workflow aus.
  5. Die REST-API gibt eine HTTP-Antwort an Microsoft Entra ID zurück.
  6. Die benutzerdefinierte Authentifizierungserweiterungvon Microsoft Entra verarbeitet die Antwort und passt die Authentifizierung basierend auf dem Ereignistyp und den HTTP-Antwortnutzdaten an.
  7. Ein Token wird an die App zurückgegeben.

REST-API-Endpunkt der benutzerdefinierten Authentifizierungserweiterung

Wenn ein Ereignis ausgelöst wird, ruft Microsoft Entra ID einen REST-API-Endpunkt auf, den Sie besitzen. Die Anforderung an die REST-API enthält Informationen über das Ereignis, das Benutzerprofil, Authentifizierungsanforderungsdaten und andere Kontextinformationen.

Sie können eine beliebige Programmiersprache, ein Framework und eine beliebige Hostingumgebung verwenden, um Ihre REST-API für benutzerdefinierte Authentifizierungserweiterungen zu erstellen und zu hosten. Verwenden Sie für einen schnellen Einsteig eine C#-Azure-Funktion. Mit Azure Functions können Sie Ihren Code in einer serverlosen Umgebung ausführen, ohne vorher einen virtuellen Computer zu erstellen oder eine Webanwendung zu veröffentlichen.

Ihre REST-API muss Folgendes verarbeiten:

  • Tokenvalidierung zum Sichern der REST-API-Aufrufe.
  • Geschäftslogik
  • Eingehende und ausgehende Überprüfung von HTTP-Anforderungs- und Antwortschemata.
  • Überwachung und Protokollierung.
  • Verfügbarkeits-, Leistungs- und Sicherheitskontrollen.

Entwickelnde, die die REST-API für Azure Functions ausführen, sollten die NuGet-Bibliothek Microsoft.Azure.WebJobs.Extensions.AuthenticationEvents verwenden. Diese hilft bei der Implementierung der Tokenüberprüfung mit den integrierten Authentifizierungsfunktionen von Microsoft Azure. Sie stellt ein Datenmodell für verschiedene Ereignistypen bereit, initiiert die Verarbeitung ein- und ausgehender Anforderungen und Antworten, sodass mehr Fokus auf die Geschäftslogik gesetzt werden kann.

Schützen Ihrer REST-API

Um sicherzustellen, dass die Kommunikation zwischen der benutzerdefinierten Authentifizierungserweiterung und Ihrer REST-API ordnungsgemäß geschützt ist, müssen mehrere Sicherheitskontrollen angewendet werden.

  1. Wenn die benutzerdefinierte Authentifizierungserweiterung Ihre REST-API aufruft, sendet sie einen HTTP-Authorization-Header mit einem von Microsoft Entra ID ausgestellten Bearertoken.
  2. Das Bearertoken enthält einen appid- oder azp-Anspruch. Überprüfen Sie, ob der jeweilige Anspruch den Wert 99045fe1-7639-4a75-9d4a-577b6ca3810f enthält. Dieser Wert stellt sicher, dass die REST-API tatsächlich durch Microsoft Entra ID aufgerufen wird.
    1. Überprüfen Sie für V1-Anwendungen den appid-Anspruch.
    2. Überprüfen Sie für V2-Anwendungen den azp-Anspruch.
  3. Der Bearertoken-aud-Zielgruppenanspruch enthält die ID der zugeordneten Anwendungsregistrierung. Ihr REST-API-Endpunkt muss überprüfen, ob das Bearertoken für diese bestimmte Zielgruppe ausgestellt wird.
  4. Der Anspruch des Bearertokenausstellers iss enthält die URL des Microsoft Entra-Ausstellers. Je nach Mandantenkonfiguration ist die Aussteller-URL eine der folgenden:
    • Mitarbeiter: https://login.microsoftonline.com/{tenantId}/v2.0.
    • Kunde: https://{domainName}.ciamlogin.com/{tenantId}/v2.0.

Benutzerdefinierter Anspruchsanbieter

Ein benutzerdefinierter Anspruchsanbieter besteht aus einer benutzerdefinierten Authentifizierungserweiterung, die eine REST-API aufruft, um Ansprüche von externen Systemen abzurufen. Ein benutzerdefinierter Anspruchsanbieter ordnet Ansprüche aus externen Systemen Token zu und kann einer oder mehreren Anwendungen in Ihrem Verzeichnis zugewiesen werden.

Erfahren Sie mehr über benutzerdefinierte Anspruchsanbieter.

Start- und Sendeereignisse der Attributsammlung

Start- und Sendeereignisse der Attributsammlung können mit benutzerdefinierten Authentifizierungserweiterungen verwendet werden, um Logik vor und nach der Erfassung von Attributen von einem Benutzer hinzuzufügen. Sie können z. B. einen Workflow hinzufügen, um die Attribute zu überprüfen, die ein Benutzer während der Registrierung eingibt. Das OnAttributeCollectionStart-Ereignis tritt am Anfang des Attributsammlungsschritts auf, bevor die Attributsammlungsseite gerendert wird. Sie können Aktionen wie das Vorbefüllen von Werten und das Anzeigen eines Blockierungsfehlers hinzufügen. Das OnAttributeCollectionSubmit-Ereignis wird ausgelöst, nachdem der Benutzer Attribute eingegeben und übermittelt hat, sodass Sie Aktionen wie das Überprüfen von Einträgen oder Ändern von Attributen hinzufügen können.

Hinweis

Start- und Sendeereignisse der Attributesammlung sind derzeit nur für Benutzerflows in Microsoft Entra External ID für externe Mandanten verfügbar. Ausführliche Informationen finden Sie unter Hinzufügen ihrer eigenen Geschäftslogik.

Weitere Informationen

  • Erfahren Sie, wie Sie benutzerdefinierte Authentifizierungserweiterungen für das Starten und Senden von Ereignissen mit einer OpenID Connect-Beispielanwendung für die Attributsammlung erstellen.