Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:
Externe Mandanten (weitere Informationen)
In diesem Artikel wird beschrieben, wie Sie die Benutzeranmeldung in Attributsammlung für Kunden erweitern. 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 Attributauflistungsschritts auf, bevor die Attributauflistungsseite gerendert wird. Sie können Aktionen wie das Vorfüllen von Werten und das Anzeigen eines Blockierungsfehlers hinzufügen.
- 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.
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-Funktion veranschaulicht. Mit Azure Functions führen Sie Ihren Code in einer serverlosen Umgebung aus, ohne vorher einen virtuellen Computer 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 nicht über ein vorhandenes Azure-Konto verfügen, können Sie sich für eine kostenlose Testversion registrieren oder Ihre Visual Studio-Abonnementvorteile verwenden, wenn Sie ein Konto erstellen.
- Ein Registrierungs- und Anmeldebenutzerablauf.
Schritt 1: Erstellen einer benutzerdefinierten REST-API für Authentifizierungserweiterungen (Azure Function-App)
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.
Wählen Sie im Azure-Portalmenü oder auf der Startseite die Option "Ressource erstellen" aus.
Suchen und wählen Sie Funktions-App aus, und wählen Sie Erstellen aus.
Verwenden Sie auf der Seite „Grundlagen“ die Funktions-App-Einstellungen, wie in der folgenden Tabelle angegeben.
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. Funktions-App-Name Global eindeutiger Name Ein Name, der die neue Funktions-App identifiziert. Gültige Zeichen sind a-z(Groß-/Kleinschreibung nicht beachtet),0-9und-.Veröffentlichen Programmcode Option zum Veröffentlichen von Codedateien oder eines Docker-Containers. Wählen Sie in diesem Lernprogramm "Code" aus. Runtime-Stack .NETTO Ihre bevorzugte Programmiersprache. Wählen Sie für dieses Lernprogramm .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 Fenster Das Betriebssystem wird für Sie basierend auf der Auswahl des Runtimestapels vorab ausgewählt. Plantyp Verbrauchstarif (Serverloses Computing) Der Hostingplan, der definiert, wie Ihre Ressourcen der Funktionen-App zugewiesen werden Wählen Sie "Überprüfen" und "Erstellen" aus, um die Auswahl der 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 "Zur 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" und dann unter "Erstellen" im Azure-Portal die Option "Funktion erstellen" aus.
- Im Fenster Funktion erstellen lassen Sie die Eigenschaft Entwicklungsumgebung als Entwickeln im Portal. Wählen Sie unter "Vorlage" den HTTP-Trigger aus.
- Geben Sie unter Vorlagendetails, CustomAuthenticationExtensionsAPI für die Eigenschaft Neue Funktion ein.
- Wählen Sie für die Autorisierungsstufe"Funktion" aus.
- Wählen Sie "Erstellen" aus.
1.2 Konfigurieren des HTTP-Triggers für OnAttributeCollectionStart
- Wählen Sie im Menü "Code+ Testen" aus.
- Wählen Sie die Registerkarte unten für das Szenario aus, das Sie implementieren möchten: Continue, Block 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 Die 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ü "Code+ Testen" aus.
- Wählen Sie die Registerkarte unten für das Szenario aus, das Sie implementieren möchten: Fortsetzen, 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 Die Ziel-URL.
- fortsetzen
- Block
- Ändern von Werten
- Überprüfungsfehler
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-Funktion 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 als Anwendungsadministrator und Authentifizierungsadministrator an.
Navigieren Sie zu Entra ID>Externe Identitäten>Benutzerdefinierte Authentifizierungserweiterungen.
Wählen Sie " Benutzerdefinierte Erweiterung erstellen" aus.
Wählen Sie in "Basics" das AttributCollectionStart-Ereignis oder das AttributCollectionSubmit-Ereignis und dann "Weiter" aus. Stellen Sie sicher, dass dies der Konfiguration im vorherigen Schritt entspricht.
Füllen Sie in der Endpunktkonfiguration die folgenden Eigenschaften aus:
- Name – Ein Name für Ihre benutzerdefinierte Authentifizierungserweiterung. Beispiel: On Attribute Collection Event.
-
Ziel-URL – Die
{Function_Url}Url Ihrer Azure-Funktion. - Beschreibung – Eine Beschreibung für Ihre benutzerdefinierten Authentifizierungserweiterungen.
Wählen Sie "Weiter" aus.
Wählen Sie in der API-Authentifizierung die Option " Neue App-Registrierung erstellen" aus, um eine App-Registrierung zu erstellen, die Ihre Funktions-App darstellt.
Geben Sie der App einen Namen, z. B. die Azure Functions-Authentifizierungsereignisse-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 Entra ID>Externe Identitäten>Benutzerdefinierte Authentifizierungserweiterungen.
- 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 Zustimmung des Administrators zu erteilen. Die benutzerdefinierte Authentifizierungserweiterung verwendet
client_credentialsfür die Authentifizierung bei der Azure-Funktions-App mit der BerechtigungReceive custom authentication extension HTTP requests. Wählen Sie "Annehmen" 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 als Anwendungsadministrator und Authentifizierungsadministrator an.
Wenn Sie Zugriff auf mehrere Mandanten haben, verwenden Sie das Symbol "Einstellungen"
im oberen Menü, um zu Ihrem externen Mandanten zu wechseln.Navigieren Sie zu Entra ID>Externe Identitäten>Benutzerflüsse.
Wählen Sie den Benutzerflow in der Liste aus.
Wählen Sie benutzerdefinierte Authentifizierungserweiterungen aus.
Auf der Seite "Benutzerdefinierte Authentifizierungserweiterungen " können Sie Ihre benutzerdefinierte Authentifizierungserweiterung zwei verschiedenen Schritten im Benutzerablauf zuordnen:
- Das OnAttributeCollectionStart-Ereignis wird vor dem Sammeln von Informationen vom Benutzer zugeordnet. Wählen Sie den Bearbeitungsstift aus. Nur die für das OnAttributeCollectionStart-Ereignis 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 dem OnAttributeCollectionSubmit-Ereignis zugeordnet. nur die für das OnAttributeCollectionSubmit-Ereignis konfigurierten benutzerdefinierten Erweiterungen werden angezeigt. Wählen Sie die Anwendung aus, die Sie für das Sendeereignis der Attributsammlung konfiguriert haben, und klicken Sie dann auf Auswählen.
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 jwt.ms Webanwendung zu registrieren:
4.1 Registrieren der jwt.ms-Webanwendung
- Melden Sie sich mindestens als Anwendungsadministrator beim Microsoft Entra Admin Center an.
- Navigieren Sie zu Entra ID>App-Registrierungen.
- Wählen Sie "Neue Registrierung" aus.
- Geben Sie einen Namen für die Anwendung ein. Beispiel: Meine Testanwendung.
- Wählen Sie unter "Unterstützte Kontotypen" nur "Konten" in diesem Organisationsverzeichnis aus.
- Im Dropdownmenü "Plattform auswählen" unter Umleitungs-URI wählen Sie "Web" aus und geben Sie dann
https://jwt.msin das Textfeld für die URL 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 auf die appId-Eigenschaft verwiesen.
4.3 Aktivieren des impliziten Flows
Die jwt.ms Testanwendung verwendet den impliziten Fluss. Aktivieren Sie den impliziten Flow in der Registrierung Ihrer My Test-Anwendung 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 Gewährung" und "Hybridflüsse" das Kontrollkästchen "ID-Token" (verwendet für implizite und Hybridflüsse).
- Wählen Sie "Speichern" aus.
Schritt 5: Schützen Ihrer Azure-Funktion
Die benutzerdefinierte Microsoft Entra-Authentifizierungserweiterung verwendet den Server-zu-Server-Flow, um ein Zugriffstoken abzurufen, das im HTTP-Header Authorization an Ihre Azure-Funktion gesendet wird. Wenn Sie Ihre Funktion in Azure – insbesondere in einer Produktionsumgebung – veröffentlichen, müssen Sie das im Autorisierungsheader gesendete Token überprüfen.
Um Ihre Azure-Funktion zu schützen, führen Sie die folgenden Schritte aus, um die Microsoft Entra-Authentifizierung zu integrieren, um eingehende Token mit Ihrer Azure Functions-Authentifizierungsereignisse-API-Anwendungsregistrierung zu überprüfen.
Hinweis
Wenn die Azure-Funktions-App in einem anderen Azure-Mandanten gehostet wird als der Mandant, in dem Ihre benutzerdefinierte Authentifizierungserweiterung registriert ist, fahren Sie mit 5.1 Mithilfe des OpenID Connect-Identitätsanbieterschritts fort.
5.1 Hinzufügen eines Identitätsanbieters zu Ihrer Azure-Funktion
Melden Sie sich beim Azure-Portal an.
Navigieren Sie, und wählen Sie die Zuvor veröffentlichte Funktions-App aus.
Wählen Sie im Menü auf der linken Seite die Authentifizierung aus.
Wählen Sie "Identitätsanbieter hinzufügen" aus.
Wählen Sie Microsoft als Identitätsanbieter aus.
Wählen Sie "Kunde " als Mandantentyp aus.
Unter App-Registrierung geben Sie die
client_idder API-Registrierung der Azure Functions-Authentifizierungsereignisse ein, die Sie zuvor beim Registrieren des benutzerdefinierten Anspruchsanbieters erstellt haben.Geben Sie für die Aussteller-URL die folgende URL
https://{domainName}.ciamlogin.com/{tenant_id}/v2.0ein, wobei-
{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" HTTP 401 "Nicht autorisiert" als Identitätsanbieter aus.
Deaktivieren Sie die Tokenspeicheroption.
Wählen Sie "Hinzufügen" aus, um Ihrer Azure-Funktion Authentifizierung hinzuzufügen.
5.2 Verwenden des OpenID Connect-Identitätsanbieters
Wenn Sie Schritt 5 konfiguriert haben: Schützen Sie Ihre Azure-Funktion, überspringen Sie diesen Schritt. Wird die Azure-Funktion 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 dann, und wählen Sie die Zuvor veröffentlichte Funktions-App aus.
Wählen Sie im Menü auf der linken Seite die Authentifizierung aus.
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 Eintrag "Metadaten" 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-configurationGeben Sie unter der App-Registrierung die Anwendungs-ID (Client-ID) der API-App-Registrierung der Azure Functions-Authentifizierungsereignisse ein, die Sie zuvor erstellt haben.
Im Microsoft Entra Admin Center:
- Wählen Sie die App-Registrierung für die Azure Functions Authentifizierungsereignisse API aus, die Sie zuvor erstellt haben.
- Wählen Sie Zertifikate und Geheimnisse>Clientgeheimnisse>Neues Clientgeheimnis 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" aus.
- Notieren Sie den Wert des geheimen Schlüssels für die Verwendung im Clientanwendungscode. Dieser Geheimniswert kann nach Verlassen dieser Seite nicht erneut angezeigt werden.
Zurück zur Azure-Funktion geben Sie unter der App-Registrierung den geheimen Clientschlüssel ein.
Deaktivieren Sie die Tokenspeicheroption.
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.msangezeigt.