Erstellen einer benutzerdefinierten Authentifizierungserweiterung für Start- und Sendeereignisse von Attributsammlungen (Vorschau)
Gilt für: Mitarbeitermandanten Externe Mandanten (weitere Informationen)
Dieser Artikel beschreibt, wie die Benutzeranmeldung in Microsoft Entra External ID für Kunden erweitert werden kann. In Benutzerabläufen für die Kundenanmeldung können Ereignislistener verwendet werden, um den Attributsammlungsprozess vor der Attributsammlung und zum Zeitpunkt der Attributübermittlung zu erweitern:
Das OnAttributeCollectionStart-Ereignis tritt am Anfang des Attributsammlungsschritts auf, bevor die Attributsammlungsseite gerendert wird. Sie können Aktionen wie das Vorfüllen von Werten und das Anzeigen eines Blockierungsfehlers hinzufügen.
Tipp
Um dieses Feature auszuprobieren, wechseln Sie zur Woodgrove Groceries Demo, und starten Sie den Anwendungsfall „Vorfüllen von Anmeldeattributen“.
Das OnAttributeCollectionSubmit-Ereignis tritt auf, nachdem der Benutzer Attribute eingegeben und übermittelt hat. Sie können Aktionen wie das Überprüfen oder Ändern der Benutzereinträge hinzufügen.
Tipp
Um dieses Feature auszuprobieren, wechseln Sie zur Woodgrove Groceries-Demo, und starten Sie den Anwendungsfall Anmeldungsattribute überprüfen oder den Anwendungsfall Benutzer daran hindern, den Anmeldevorgang fortzusetzen.
Zusätzlich zum Erstellen einer benutzerdefinierten Authentifizierungserweiterung für die Start- und Absenden-Ereignisse für die Attributsammlung müssen Sie eine REST-API erstellen, die die Workflowaktionen definiert, die für jedes Ereignis auszuführen sind. Sie können eine beliebige Programmiersprache, ein Framework und eine beliebige Hostingumgebung verwenden, um Ihre REST-API zu erstellen und zu hosten. In diesem Artikel wird eine schnelle Möglichkeit zum Einstieg in die Verwendung einer C#-Azure Function veranschaulicht. Mit Azure Functions führen Sie Ihren Code in einer serverlosen Umgebung aus, ohne vorher eine virtuelle Maschine (VM) zu erstellen oder eine Webanwendung zu veröffentlichen.
Voraussetzungen
- Für die Verwendung von Azure-Diensten einschließlich Azure Functions benötigen Sie ein Azure-Abonnement. Wenn Sie noch nicht über ein Azure-Konto verfügen, können Sie sich für eine kostenlose Testversion registrieren oder beim Erstellen eines Kontos die Vorteile eines Visual Studio-Abonnement nutzen.
- Ein Benutzerablauf für Registrierung und Anmeldung.
Schritt 1: Erstellen einer benutzerdefinierten REST-API für Authentifizierungserweiterungen (Azure Function-App)
Tipp
Die Schritte in diesem Artikel können je nach dem Portal, mit dem Sie beginnen, geringfügig variieren.
In diesem Schritt erstellen Sie eine HTTP-Triggerfunktions-API mit Azure Functions. Die Funktions-API ist die Quelle der Geschäftslogik für Ihre Benutzerflüsse. Nach dem Erstellen der Triggerfunktion können Sie sie für eins der folgenden Ereignisse konfigurieren:
Melden Sie sich mit Ihrem Administratorkonto beim Azure-Portal an.
Klicken Sie im Menü des Azure-Portals oder auf der Startseite auf Ressource erstellen.
Suchen Sie nach Funktions-App, und wählen Sie diese Option und dann Erstellen aus.
Verwenden Sie auf der Seite Grundlagen die Funktions-App-Einstellungen, die in der folgenden Tabelle angegeben sind:
Einstellung Vorgeschlagener Wert Beschreibung Abonnement Ihr Abonnement Das Abonnement, in dem die neue Funktions-App erstellt wird. Ressourcengruppe myResourceGroup Wählen Sie eine vorhandene Ressourcengruppe oder einen Namen für die neue Ressourcengruppe aus, in der Ihre Funktions-App erstellt werden soll. Name der Funktions-App Global eindeutiger Name Ein Name, der die neue Funktions-App identifiziert. Gültige Zeichen sind a-z
(Groß-/Kleinschreibung nicht beachtet),0-9
und-
.Veröffentlichen Code Option zum Veröffentlichen von Codedateien oder eines Docker-Containers. In diesem Tutorial wählen Sie Code aus. Runtimestapel .NET Ihre bevorzugte Programmiersprache. In diesem Tutorial wählen Sie .NET aus. Version 6 (LTS) In-Process Die Version der .NET-Runtime. In-Process bedeutet, dass Sie Funktionen im Portal erstellen und ändern können. Dies wird für diesen Leitfaden empfohlen Region Bevorzugte Region Wählen Sie eine Region in Ihrer Nähe oder in der Nähe anderer Dienste aus, auf die Ihre Funktionen zugreifen können. Betriebssystem Windows Das Betriebssystem wird für Sie basierend auf der Auswahl des Runtimestapels vorab ausgewählt. Plantyp Verbrauch (serverlos) Der Hostingplan, der definiert, wie Ihre Ressourcen der Funktionen-App zugewiesen werden. Wählen Sie Überprüfen und erstellen aus, um die ausgewählte App-Konfiguration zu überprüfen, und wählen Sie dann Erstellen aus. Die Bereitstellung nimmt einige Minuten in Anspruch.
Wählen Sie nach der Bereitstellung Zu Ressource wechseln aus, um Ihre neue Funktions-App anzuzeigen.
1.1 Erstellen von HTTP-Triggerfunktionen
Nachdem Sie nun die Azure Function-App erstellt haben, erstellen Sie HTTP-Triggerfunktionen für die Aktionen, die Sie mit einer HTTP-Anforderung aufrufen möchten. Ihre benutzerdefinierte Microsoft Entra-Authentifizierungserweiterung verweist auf diesen HTTP-Trigger und ruft ihn auf.
- Wählen Sie auf der Seite Übersicht Ihrer Funktions-App den Bereich Funktionen aus, und wählen Sie unter Im Azure-Portal erstellen die Option Funktion erstellen aus.
- Übernehmen Sie im Fenster Funktion erstellen für die Eigenschaft Entwicklungsumgebung die Option Im Portal entwickeln. Wählen Sie unter Vorlage die Option HTTP-Trigger aus.
- Geben Sie unter Vorlagendetails für die Eigenschaft Neue Funktion die Zeichenfolge CustomAuthenticationExtensionsAPI ein.
- Wählen Sie für die Autorisierungsstufe die Option Funktion aus.
- Klicken Sie auf Erstellen.
1.2 Konfigurieren des HTTP-Triggers für OnAttributeCollectionStart
- Wählen Sie im Menü die Option Programmieren und testen aus.
- Wählen Sie die Registerkarte unten für das Szenario aus, das Sie implementieren möchten: Fortfahren, Blockieren oder SetPrefillValues. Ersetzen Sie den Code durch den/die bereitgestellten Codeschnipsel.
- Nachdem Sie den Code ersetzt haben, wählen Sie im oberen Menü die Option Funktions-URL abrufen aus und kopieren Sie die URL. Sie verwenden diese URL in Schritt 2: Erstellen und Registrieren einer benutzerdefinierten Authentifizierungserweiterung für Ziel-URL.
Verwenden Sie diesen HTTP-Trigger, damit der Benutzer den Registrierungsablauf fortsetzen kann, wenn keine weitere Aktion erforderlich ist.
#r "Newtonsoft.Json"
using System.Net;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Primitives;
using Newtonsoft.Json;
using System.Text;
public static async Task<object> Run(HttpRequest req, ILogger log)
{
log.LogInformation("C# HTTP trigger function processed a request.");
string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
dynamic request = JsonConvert.DeserializeObject(requestBody);
var actions = new List<ContinueWithDefaultBehavior>{
new ContinueWithDefaultBehavior { type = "microsoft.graph.attributeCollectionStart.continueWithDefaultBehavior"}
};
var dataObject = new Data {
type = "microsoft.graph.onAttributeCollectionStartResponseData",
actions= actions
};
dynamic response = new ResponseObject {
data = dataObject
};
// Send the response
return response;
}
public class ResponseObject
{
public Data data { get; set; }
}
[JsonObject]
public class Data {
[JsonProperty("@odata.type")]
public string type { get; set; }
public List<ContinueWithDefaultBehavior> actions { get; set; }
}
[JsonObject]
public class ContinueWithDefaultBehavior {
[JsonProperty("@odata.type")]
public string type { get; set; }
}
1.3 Konfigurieren des HTTP-Triggers für OnAttributeCollectionSubmit
- Wählen Sie im Menü die Option Programmieren und testen aus.
- Wählen Sie die Registerkarte unten für das Szenario aus, das Sie implementieren möchten: Fortfahren, Blockieren,Werte ändern oder Validierungsfehler. Ersetzen Sie den Code durch den/die bereitgestellten Codeschnipsel.
- Nachdem Sie den Code ersetzt haben, wählen Sie im oberen Menü die Option Funktions-URL abrufen aus und kopieren Sie die URL. Sie verwenden diese URL in Schritt 2: Erstellen und Registrieren einer benutzerdefinierten Authentifizierungserweiterung für Ziel-URL.
Verwenden Sie diesen HTTP-Trigger, damit der Benutzer den Registrierungsablauf fortsetzen kann, wenn keine weitere Aktion erforderlich ist.
#r "Newtonsoft.Json"
using System.Net;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Primitives;
using Newtonsoft.Json;
using System.Text;
public static async Task<object> Run(HttpRequest req, ILogger log)
{
log.LogInformation("C# HTTP trigger function processed a request.");
string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
dynamic request = JsonConvert.DeserializeObject(requestBody);
var actions = new List<ContinueWithDefaultBehavior>{
new ContinueWithDefaultBehavior { type = "microsoft.graph.attributeCollectionSubmit.continueWithDefaultBehavior"}
};
var dataObject = new Data {
type = "microsoft.graph.onAttributeCollectionSubmitResponseData",
actions= actions
};
dynamic response = new ResponseObject {
data = dataObject
};
// Send the response
return response;
}
public class ResponseObject
{
public Data data { get; set; }
}
[JsonObject]
public class Data {
[JsonProperty("@odata.type")]
public string type { get; set; }
public List<ContinueWithDefaultBehavior> actions { get; set; }
}
[JsonObject]
public class ContinueWithDefaultBehavior {
[JsonProperty("@odata.type")]
public string type { get; set; }
}
Schritt 2: Erstellen und Registrieren einer benutzerdefinierten Authentifizierungserweiterung
In diesem Schritt registrieren Sie eine benutzerdefinierte Authentifizierungserweiterung, die von Microsoft Entra ID zum Aufrufen Ihrer Azure Function verwendet wird. Die benutzerdefinierte Authentifizierungserweiterung enthält Informationen zu Ihrem REST-API-Endpunkt, den Start- und Senden-Aktionen der Attributsammlung, die sie von Ihrer REST-API analysiert, und wie Sie sich bei Ihrer REST-API authentifizieren.
Melden Sie sich beim Microsoft Entra Admin Center mindestens mit der Rolle Anwendungsadministrator und Authentifizierungsadministrator an.
Navigieren Sie zu Identität>External Identities>Benutzerdefinierte Authentifizierungserweiterungen.
Wählen Sie Benutzerdefinierte Erweiterung erstellen aus.
Wählen Sie in Basics das AttributeCollectionStart-Ereignis oder das AttributeCollectionSubmit-Ereignis und dann Weiter aus. Stellen Sie sicher, dass dies der Konfiguration im vorherigen Schritt entspricht.
Füllen Sie unter Endpunktkonfiguration die folgenden Eigenschaften aus:
- Name – Ein Name für Ihre benutzerdefinierte Authentifizierungserweiterung. Beispiel: Bei Attributesammlungs-Ereignis.
- Ziel-URL: Die
{Function_Url}
Ihrer Azure Functions-URL. - Beschreibung – Eine Beschreibung für Ihre benutzerdefinierten Authentifizierungserweiterungen.
Wählen Sie Weiter aus.
Wählen Sie unter API-Authentifizierung die Option Neue App-Registrierung erstellen aus, um eine App-Registrierung zu erstellen, die Ihre Funktions-App darstellt.
Weisen Sie der App einen Namen zu, z. B. Azure Functions-Authentifizierungsereignis-API.
Wählen Sie Weiter aus.
Wählen Sie Erstellen aus, wodurch die benutzerdefinierte Authentifizierungserweiterung und die zugehörige Anwendungsregistrierung erstellt werden.
2.2 Erteilen der Administratoreinwilligung
Nachdem Ihre benutzerdefinierte Authentifizierungserweiterung erstellt wurde, erteilen Sie der registrierten App die Anwendungszustimmung, wodurch die benutzerdefinierte Authentifizierungserweiterung bei Ihrer API authentifiziert werden kann.
- Navigieren Sie zu Identität>Externe Identitäten>Benutzerdefinierte Authentifizierungserweiterungen (Vorschau).
- Wählen Sie ihre benutzerdefinierte Authentifizierungserweiterung aus der Liste aus.
- Wählen Sie auf der Registerkarte Übersicht die Schaltfläche Berechtigung erteilen aus, um der registrierten App die Administratoreinwilligung zu erteilen. Die benutzerdefinierte Authentifizierungserweiterung verwendet
client_credentials
für die Authentifizierung bei der Azure Functions-App mit der BerechtigungReceive custom authentication extension HTTP requests
. Wählen Sie Akzeptieren aus.
Schritt 3: Hinzufügen der benutzerdefinierten Authentifizierungserweiterung zu einem Benutzerablauf
Jetzt können Sie die benutzerdefinierte Authentifizierungserweiterung einem oder mehreren Ihrer Benutzerabläufe zuordnen.
Hinweis
Wenn Sie einen Benutzerablauf erstellen müssen, führen Sie die Schritte unter Erstellen eines Registrierungs- und Anmeldebenutzerablaufs für Kunden aus.
3.1 Hinzufügen der benutzerdefinierten Authentifizierungserweiterung zu einem vorhandenen Benutzerablauf
Melden Sie sich beim Microsoft Entra Admin Center mindestens mit der Rolle Anwendungsadministrator und Authentifizierungsadministrator an
Wenn Sie Zugriff auf mehrere Mandanten haben, verwenden Sie das Einstellungen-Symbol im oberen Menü, um zu Ihrem externen Mandanten zu wechseln.
Browsen Sie zu Identität>External Identities>Benutzerflows.
Wählen Sie den Benutzerflow in der Liste aus.
Wählen Sie Benutzerdefinierte Authentifizierungserweiterungen.
Auf der Seite Benutzerdefinierte Authentifizierungserweiterungen können Sie Ihre benutzerdefinierte Authentifizierungserweiterung zwei verschiedenen Schritten im Benutzerablauf zuordnen:
- Vor dem Sammeln von Informationen vom Benutzer wird das Ereignis OnAttributeCollectionStart zugeordnet. Wählen Sie den Bearbeitungsstift aus. Nur die für das Ereignis OnAttributeCollectionStart konfigurierten benutzerdefinierten Erweiterungen werden angezeigt. Wählen Sie die Anwendung aus, die Sie für das Startereignis der Attributsammlung konfiguriert haben, und wählen Sie dann Auswählen aus.
- Wenn ein Benutzer seine Informationen sendet, wird das Ereignis OnAttributeCollectionSubmit zugeordnet. Nur die für das Ereignis OnAttributeCollectionSubmit konfigurierten benutzerdefinierten Erweiterungen werden angezeigt. Wählen Sie die Anwendung aus, die Sie für das Sendeereignis der Attributsammlung konfiguriert haben, und wählen Sie dann Auswählen aus.
Stellen Sie sicher, dass die Anwendungen, die neben beiden Attributsammlungsschritten aufgeführt sind, korrekt sind.
Wählen Sie das Symbol Speichern aus.
Schritt 4: Testen der Anwendung
Sie können die https://jwt.ms-App verwenden, um ein Token abzurufen und die benutzerdefinierte Authentifizierungserweiterung zu testen. Dabei handelt es sich um eine Microsoft-Webanwendung, die den decodierten Inhalt eines Tokens anzeigt (der Inhalt des Tokens verlässt niemals Ihren Browser).
Führen Sie die folgenden Schritte aus, um die Webanwendung jwt.ms zu registrieren:
4.1 Registrieren der jwt.ms-Webanwendung
- Melden Sie sich beim Microsoft Entra Admin Center mindestens mit der Rolle Anwendungsadministrator an.
- Navigieren Sie zu Identität>Anwendungen>Anwendungsregistrierungen.
- Wählen Sie Neue Registrierung aus.
- Geben Sie unter Name einen Namen für die Anwendung ein. Beispielsweise Meine Testanwendung.
- Wählen Sie unter Unterstützte Kontotypen die Option Nur Konten in diesem Organisationsverzeichnis aus.
- Wählen Sie im Dropdownmenü Plattform auswählen unter Umleitungs-URI die Option Web aus, und geben Sie dann in das URL-Textfeld die Zeichenfolge
https://jwt.ms
ein. - Wählen Sie Registrieren aus, um die App-Registrierung abzuschließen.
4.2 Abrufen der Anwendungs-ID
Kopieren Sie in Ihrer App-Registrierung unter Übersicht die Anwendungs-ID (Client-ID). Die App-ID wird in späteren Schritten als <client_id>
bezeichnet. In Microsoft Graph wird sie durch die appId-Eigenschaft referenziert.
4.3 Aktivieren des impliziten Flows
Die Testanwendung jwt.ms verwendet den impliziten Flow. Aktivieren Sie den impliziten Flow in Ihrer App-Registrierung Meine Testanwendung mit den folgenden Schritten.
Wichtig
Microsoft empfiehlt, immer den sichersten Authentifizierungsflow zu verwenden, der verfügbar ist. Der in diesem Verfahren beschriebene Authentifizierungsflow erfordert ein sehr hohes Maß an Vertrauen in die Anwendung und birgt Risiken, die bei anderen Flows nicht vorhanden sind. Dieser Ansatz sollte nicht für die Authentifizierung von Benutzern für Ihre Produktions-Apps verwendet werden (weitere Informationen).
- Wählen Sie unter Verwalten die Option Authentifizierung aus.
- Aktivieren Sie unter Implizite Genehmigung und Hybridflows das Kontrollkästchen ID-Token (für implizite und Hybridflows verwendet).
- Wählen Sie Speichern.
Schritt 5: Schützen Ihrer Azure Function
Die benutzerdefinierte Microsoft Entra-Authentifizierungserweiterung verwendet den Server-zu-Server-Flow, um ein Zugriffstoken abzurufen, das im HTTP-Header Authorization
an Ihre Azure Function gesendet wird. Wenn Sie Ihre Funktion in Azure – insbesondere in einer Produktionsumgebung – veröffentlichen, müssen Sie das im Autorisierungsheader gesendete Token überprüfen.
Führen Sie zum Schutz Ihrer Azure Function die folgenden Schritte zum Integrieren der Microsoft Entra-Authentifizierung aus, um eingehende Token mit der Azure Functions-Authentifizierungsereignis-API zur Authentifizierungsregistrierung zu überprüfen.
Hinweis
Wenn die Azure Function-App in einem anderen Azure-Mandanten gehostet wird als dem Mandanten, in dem Ihre benutzerdefinierte Authentifizierungserweiterung registriert ist, fahren Sie mit dem Schritt 5.1 Verwenden des OpenID Connect-Identitätsanbieters fort.
5.1 Hinzufügen eines Identitätsanbieters zu Ihrer Azure Function
Melden Sie sich beim Azure-Portal an.
Navigieren Sie zu der zuvor veröffentlichten Funktions-App, und wählen Sie diese aus.
Wählen Sie Authentifizierung im Menü auf der linken Seite.
Wählen Sie Identitätsanbieter hinzufügen aus.
Wählen Sie Microsoft als Identitätsanbieter aus.
Wählen Sie als Mandantentyp Kunde aus.
Geben Sie unter App-Registrierung die Client-ID (
client_id
) der App-Registrierung Azure Functions-Authentifizierungsereignis-API ein, die Sie beim Registrieren des benutzerdefinierten Anspruchsanbieters zuvor erstellt haben.Geben Sie für Aussteller-URL die URL
https://{domainName}.ciamlogin.com/{tenant_id}/v2.0
ein. Dabei gilt Folgendes:{domainName}
ist der Domänenname Ihres externen Mandanten.{tenantId}
ist die Mandanten-ID Ihres externen Mandanten. Ihre benutzerdefinierte Authentifizierungserweiterung sollte hier registriert werden.
Wählen Sie unter Nicht authentifizierte Anforderungen die Option HTTP 401 (nicht autorisiert): für APIs empfohlen aus.
Deaktivieren Sie die Option Tokenspeicher.
Wählen Sie Hinzufügen aus, um Ihrer Azure Function die Authentifizierung hinzuzufügen.
5.2 Verwenden des OpenID Connect-Identitätsanbieters
Wenn Sie Schritt 5: Schützen Sie Ihre Azure Function konfiguriert haben, überspringen Sie diesen Schritt. Wird die Azure Function jedoch in einem anderen Mandanten gehostet als dem Mandanten, in dem Ihre benutzerdefinierte Authentifizierungserweiterung registriert ist, führen Sie die folgenden Schritte aus, um Ihre Funktion zu schützen:
Melden Sie sich beim Azure-Portal an, navigieren Sie zu der zuvor veröffentlichten Funktions-App, und wählen Sie diese aus.
Wählen Sie Authentifizierung im Menü auf der linken Seite.
Wählen Sie Identitätsanbieter hinzufügen aus.
Wählen Sie OpenID Connect als Identitätsanbieter aus.
Geben Sie einen Namen an, z. B. Contoso Microsoft Entra ID.
Geben Sie unter dem Metadateneintrag die folgende URL zur Dokument-URL ein. Ersetzen Sie
{tenantId}
durch Ihre Microsoft Entra-Mandanten-ID.https://login.microsoftonline.com/{tenantId}/v2.0/.well-known/openid-configuration
Geben Sie unter der App-Registrierung die Anwendungs-ID (Client-ID) der App-Registrierung Azure Functions-Authentifizierungsereignis-API ein, die Sie zuvor erstellt haben.
Im Microsoft Entra Admin Center:
- Wählen Sie die App-Registrierung Azure Functions-Authentifizierungsereignis-API aus, die Sie zuvor erstellt haben.
- Wählen Sie Zertifikate und Geheimnisse>Geheime Clientschlüssel>Neuer geheimer Clientschlüssel aus.
- Fügen Sie eine Beschreibung für Ihren geheimen Clientschlüssel hinzu.
- Wählen Sie für das Geheimnis eine Ablauffrist aus, oder geben Sie eine benutzerdefinierte Lebensdauer an.
- Wählen Sie Hinzufügen.
- Notieren Sie sich den Wert des geheimen Clientschlüssels, der in Ihrem Clientanwendungscode verwendet werden soll. Dieser Geheimniswert kann nach Verlassen dieser Seite nicht erneut angezeigt werden.
Geben Sie in der Azure Function unter der App-Registrierung den geheimen Clientschlüssel ein.
Deaktivieren Sie die Option Tokenspeicher.
Wählen Sie Hinzufügen aus, um den OpenID Connect-Identitätsanbieter hinzuzufügen.
Schritt 6: Testen der Anwendung
Führen Sie die folgenden Schritte aus, um Ihre benutzerdefinierte Authentifizierungserweiterung zu testen:
Öffnen Sie einen neuen privaten Browser, und navigieren Sie zur folgenden URL:
https://<domainName>.ciamlogin.com/<tenant_id>/oauth2/v2.0/authorize?client_id=<client_id>&response_type=code+id_token&redirect_uri=https://jwt.ms&scope=openid&state=12345&nonce=12345
- Ersetzen Sie den
<domainName>
-Namen Ihres externen Mandanten durch Ihren externen Mandantennamen und ersetzen Sie<tenant-id>
sie durch Ihre externe Mandanten-ID. - Ersetzen Sie
<client_id>
durch die ID für die Anwendung, die Sie dem Benutzerablauf hinzugefügt haben.
- Ersetzen Sie den
Nach der Anmeldung wird Ihr decodiertes Token unter
https://jwt.ms
angezeigt.