Einrichten eines Flows für Kennwortanmeldeinformationen von Ressourcenbesitzern in Azure Active Directory B2C
Artikel
Bevor Sie beginnen, verwenden Sie den Auswahlpunkt Richtlinientyp wählen, um die Art der Richtlinie auszuwählen, die Sie einrichten möchten. Azure Active Directory B2C bietet zwei Methoden zum Definieren der Benutzerinteraktion mit Ihren Anwendungen: vordefinierte Benutzerflows oder vollständig konfigurierbare benutzerdefinierte Richtlinien. Die Schritte, die in diesem Artikel erforderlich sind, unterscheiden sich für jede Methode.
In Azure Active Directory B2C (Azure AD B2C) ist der Flow für Kennwortanmeldeinformationen des Ressourcenbesitzers (Resource Owner Password Credentials, ROPC) ein OAuth-Standardauthentifizierungsflow. Bei diesem Flow tauscht eine Anwendung, die auch als die vertrauende Seite bezeichnet wird, gültige Anmeldeinformationen gegen Token aus. Die Anmeldeinformationen enthalten eine Benutzer-ID und ein Kennwort. Die zurückgegebenen Token sind ein ID-Token, ein Zugriffstoken und ein Aktualisierungstoken.
Warnung
Es wird empfohlen, den ROPC-Flow nicht zu verwenden. In den meisten Szenarien sind sicherere Alternativen verfügbar und werden daher empfohlen. Dieser Flow erfordert ein sehr hohes Maß an Vertrauen in die Anwendung und birgt Risiken, die in anderen Flows nicht vorhanden sind. Verwenden Sie diesen Flow nur, wenn kein anderer Flow verfügbar ist, der mehr Sicherheit bietet.
Hinweise zum ROPC-Flow
In Azure Active Directory B2C (Azure AD B2C) werden die folgenden Optionen unterstützt:
Nativer Client: Die Benutzerinteraktion während der Authentifizierung erfolgt, wenn Code auf einem Gerät auf Benutzerseite ausgeführt wird. Bei dem Gerät kann es sich um eine mobile Anwendung handeln, die unter einem nativen Betriebssystem wie Android oder iOS ausgeführt wird.
Flow für öffentlichen Client: Im API-Aufruf werden nur die von einer Anwendung gesammelten Benutzeranmeldeinformationen gesendet. Die Anmeldeinformationen der Anwendung werden nicht gesendet.
Neue Ansprüche hinzufügen: Der Inhalt des ID-Tokens kann geändert werden, um neue Ansprüche hinzuzufügen.
Folgende Flows werden nicht unterstützt:
Server-zu-Server: Das Identitätsschutzsystem benötigt eine zuverlässige IP-Adresse, die vom Aufrufer (dem nativen Client) im Rahmen der Interaktion erfasst wurde. Bei einem serverseitigen API-Aufruf wird nur die IP-Adresse des Servers verwendet. Wenn der dynamische Schwellenwert einer fehlgeschlagenen Authentifizierung überschritten wird, identifiziert das System für den Identitätsschutz eine wiederholt auftretende IP-Adresse als Angreifer.
Flow für vertraulichen Client: Die Anwendungsclient-ID wird überprüft, das Anwendungsgeheimnis jedoch nicht.
Beachten Sie bei der Verwendung des ROPC-Flows Folgendes:
ROPC funktioniert nicht, wenn der Authentifizierungsflow für eine Benutzerinteraktion unterbrochen wird. Zum Beispiel, wenn ein Kennwort abgelaufen ist oder geändert werden muss, wenn die mehrstufige Authentifizierung erforderlich ist, oder wenn bei der Anmeldung weitere Informationen gesammelt werden müssen (z. B. Benutzereinwilligung).
ROPC unterstützt nur lokale Konten. Benutzer können sich nicht mit Verbundidentitätsanbietern wie Microsoft, Google+, Twitter, AD FS oder Facebook anmelden.
Zum Registrieren einer Anwendung in Ihrem Azure AD B2C-Mandanten können Sie unsere neue einheitliche Benutzeroberfläche für App-Registrierungen oder unsere alte Benutzeroberfläche für Anwendungen (Legacy) verwenden. Weitere Informationen zur neuen Oberfläche
Stellen Sie sicher, dass Sie das Verzeichnis verwenden, das Ihren Azure AD B2C-Mandanten enthält:
Wählen Sie auf der Symbolleiste des Portals das Symbol Verzeichnisse und Abonnements aus.
Suchen Sie auf der Seite Portaleinstellungen > Verzeichnisse und Abonnements das Azure AD B2C-Verzeichnis in der Liste Verzeichnisname, und klicken Sie dann auf Wechseln.
Suchen Sie im Azure-Portal nach Azure AD B2C, und klicken Sie darauf.
Wählen Sie App-Registrierungen aus, und wählen Sie dann Registrierung einer neuen Anwendung aus.
Geben Sie unter Name einen Namen für die Anwendung ein. Zum Beispiel ROPC_Auth_app.
Übernehmen Sie die anderen Werte unverändert, und wählen Sie dann Registrieren aus.
Notieren Sie sich die Anwendungs-ID (Client) zur Verwendung in einem späteren Schritt.
Wählen Sie unter Verwalten die Option Authentifizierung aus.
Wählen Sie Neue Benutzeroberfläche ausprobieren aus (sofern die Option angezeigt wird).
Klicken Sie unter Erweiterte Einstellungen im Abschnitt Folgende Mobilgerät- und Desktopflows aktivieren auf Ja, um die Anwendung als öffentlichen Client zu behandeln. Diese Einstellung ist für den ROPC-Flow erforderlich.
Wählen Sie Speichern aus.
Wählen Sie im linken Menü Manifest aus, um den Manifest-Editor zu öffnen.
Legen Sie das Attribut oauth2AllowImplicitFlow auf true fest:
Stellen Sie sicher, dass Sie das Verzeichnis verwenden, das Ihren Azure AD B2C-Mandanten enthält:
Wählen Sie auf der Symbolleiste des Portals das Symbol Verzeichnisse und Abonnements aus.
Suchen Sie auf der Seite Portaleinstellungen > Verzeichnisse und Abonnements das Azure AD B2C-Verzeichnis in der Liste Verzeichnisname, und klicken Sie dann auf Wechseln.
Suchen Sie im Azure-Portal nach Azure AD B2C, und klicken Sie darauf.
Wählen Sie Anwendungen (Legacy) und dann Hinzufügen aus.
Geben Sie einen Namen für die Anwendung ein. Zum Beispiel ROPC_Auth_app.
Wählen Sie unter Nativer Client die Option Ja aus.
Übernehmen Sie die anderen Werte unverändert, und wählen Sie dann Erstellen aus.
Notieren Sie sich die ANWENDUNGS-ID zur Verwendung in einem späteren Schritt.
Erstellen eines Benutzerflows für Ressourcenbesitzer
Melden Sie sich beim Azure-Portal als globaler Administrator Ihres Azure AD B2C-Mandanten an.
Wenn Sie Zugriff auf mehrere Mandanten haben, wählen Sie das Symbol Einstellungen im Menü oben aus, um über das Menü Verzeichnisse + Abonnements zu Ihrem Azure AD B2C-Mandanten zu wechseln.
Suchen Sie im Azure-Portal nach Azure AD B2C, und wählen Sie diese Option dann aus.
Wählen Sie Benutzerflows und dann Neuer Benutzerflow aus.
Wählen Sie Mit Ressourcenbesitzer-Kennwortanmeldeinformationen (ROPC) anmelden aus.
Vergewissern Sie sich, dass unter Version die Option Vorschau aktiviert ist, und wählen Sie dann Erstellen aus.
Geben Sie einen Namen für den Benutzerflow an, z. B. ROPC_Auth.
Klicken Sie unter Anwendungsansprüche auf Mehr anzeigen.
Wählen Sie die Anwendungsansprüche aus, die Sie für Ihre Anwendung benötigen, z. B. „Anzeigename“, „E-Mail-Adresse“ und „Identitätsanbieter“.
Öffnen Sie die Datei TrustFrameworkExtensions.xml.
Falls es nicht bereits vorhanden ist, fügen Sie ein ClaimsSchema-Element und seine untergeordneten Elemente als erstes Element unter dem BuildingBlocks-Element hinzu:
<ClaimsSchema>
<ClaimType Id="logonIdentifier">
<DisplayName>User name or email address that the user can use to sign in</DisplayName>
<DataType>string</DataType>
</ClaimType>
<ClaimType Id="resource">
<DisplayName>The resource parameter passes to the ROPC endpoint</DisplayName>
<DataType>string</DataType>
</ClaimType>
<ClaimType Id="refreshTokenIssuedOnDateTime">
<DisplayName>An internal parameter used to determine whether the user should be permitted to authenticate again using their existing refresh token.</DisplayName>
<DataType>string</DataType>
</ClaimType>
<ClaimType Id="refreshTokensValidFromDateTime">
<DisplayName>An internal parameter used to determine whether the user should be permitted to authenticate again using their existing refresh token.</DisplayName>
<DataType>string</DataType>
</ClaimType>
</ClaimsSchema>
Fügen Sie dem BuildingBlocks-Element hinter dem ClaimsSchema-Element ein ClaimsTransformations-Element und dessen untergeordnete Elemente hinzu:
Ersetzen Sie DefaultValue von client_id durch die Anwendungs-ID der ProxyIdentityExperienceFramework-Anwendung, die Sie im Tutorial unter den Voraussetzungen erstellt haben. Ersetzen Sie DefaultValue von resource_id durch die Anwendungs-ID der IdentityExperienceFramework-Anwendung, die Sie ebenfalls im Tutorial unter den Voraussetzungen erstellt haben.
Fügen Sie die folgenden ClaimsProvider-Elemente mit ihren technischen Profilen dem ClaimsProviders-Element hinzu:
Wählen Sie in Ihrem Azure AD B2C-Mandanten auf der Seite Benutzerdefinierte Richtlinien die Option Richtlinie hochladen aus.
Aktivieren Sie Richtlinie überschreiben, sofern vorhanden, navigieren Sie dann zur Datei TrustFrameworkExtensions.xml, und wählen Sie die Datei aus.
Wählen Sie die Option Hochladen.
Erstellen einer Datei der vertrauenden Seite
Aktualisieren Sie als Nächstes die Datei der vertrauenden Seite, die die User Journey initiiert, die Sie erstellt haben:
Erstellen Sie in Ihrem Arbeitsverzeichnis eine Kopie der Datei SignUpOrSignIn.xml, und benennen Sie sie in ROPC_Auth.xml um.
Öffnen Sie die neue Datei, und ändern Sie den Wert des PolicyId-Attributs für TrustFrameworkPolicy in einen eindeutigen Wert. Die Richtlinien-ID ist der Name Ihrer Richtlinie. Beispiel: B2C_1A_ROPC_Auth.
Ändern Sie den Wert des ReferenceId-Attributs unter DefaultUserJourney in ResourceOwnerPasswordCredentials.
Ändern Sie das OutputClaims-Element so, dass es nur die folgenden Ansprüche enthält:
Wählen Sie in Ihrem Azure AD B2C-Mandanten auf der Seite Benutzerdefinierte Richtlinien die Option Richtlinie hochladen aus.
Aktivieren Sie Richtlinie überschreiben, sofern vorhanden, navigieren Sie dann zur Datei ROPC_Auth.xml, und wählen Sie sie aus.
Wählen Sie die Option Hochladen.
Testen des ROPC-Flows
Verwenden Sie Ihre bevorzugte API-Entwicklungsanwendung, um einen API-Aufruf zu generieren, und überprüfen Sie die Antwort, um Ihre Richtlinie zu debuggen. Erstellen Sie einen Aufruf wie das folgende Beispiel, und verwenden Sie die folgenden Informationen als Hauptteil der POST-Anforderung:
Die angegebene Anwendung ist nicht zum Zulassen des impliziten OAuth-Flows konfiguriert.
Symptom: Sie führen den ROPC-Flow aus und erhalten die folgende Meldung: AADB2C90057: Die angegebene Anwendung ist nicht zum Zulassen des impliziten OAuth-Flows konfiguriert.
Mögliche Ursachen: Der implizite Flow ist für Ihre Anwendung nicht zulässig.
Lösung: Beim Erstellen der App-Registrierung in Azure AD B2C müssen Sie das Anwendungsmanifest manuell bearbeiten und den Wert der Eigenschaft oauth2AllowImplicitFlow auf true festlegen. Nach dem Konfigurieren der Eigenschaft oauth2AllowImplicitFlow kann es einige Minuten (in der Regel nicht länger als fünf Minuten) dauern, bis die Änderung wirksam wird.
Verwenden eines nativen SDK oder einer App-Authentifizierung
Hier erfahren Sie, wie Microsoft Entra External ID sichere, nahtlose Anmeldungen für Ihre Privat- und Geschäftskunden bereitstellen kann. Machen Sie sich mit der Mandantenerstellung, der App-Registrierung, der Ablaufanpassung und der Kontosicherheit vertraut.