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.
Von Bedeutung
Ab dem 1. Mai 2025 steht Azure AD B2C nicht mehr für neue Kunden zur Verfügung. Weitere Informationen finden Sie in unseren HÄUFIG gestellten Fragen.
Bevor Sie beginnen, verwenden Sie die Auswahl eines Richtlinientyps oben auf dieser Seite, um den Typ der Richtlinie auszuwählen, die Sie einrichten. 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.
Der Fluss zur Gewährung von OAuth 2.0-Clientanmeldeinformationen ermöglicht es einer App (vertraulicher Client), eigene Anmeldeinformationen zu verwenden, anstatt einen Benutzer zu imitieren, sich beim Aufrufen einer Webressource wie der REST-API zu authentifizieren. Diese Art der Gewährung wird häufig für Interaktionen zwischen Servern verwendet, die ohne Benutzereingriff im Hintergrund ausgeführt werden müssen. Diese Anwendungstypen werden oft als Daemons oder Dienstkonten bezeichnet.
Im Flow zum Gewähren von Clientanmeldeinformationen werden Berechtigungen von einem Administrator direkt an die eigentliche Anwendung erteilt. Wenn die App ein Token für eine Ressource darstellt, erzwingt die Ressource, dass die App selbst über die Autorisierung zum Ausführen einer Aktion verfügt, da kein Benutzer an der Authentifizierung beteiligt ist. In diesem Artikel werden die Schritte behandelt, die erforderlich sind, um eine Anwendung zum Aufrufen einer API zu autorisieren und die token abzurufen, die zum Aufrufen dieser API erforderlich sind.
Hinweis
Dieses Feature befindet sich in Public Preview.
Übersicht über die App-Registrierung
Damit Sich Ihre App mit Clientanmeldeinformationen anmelden kann, rufen Sie dann eine Web-API auf, und registrieren Sie zwei Anwendungen im Azure AD B2C-Verzeichnis.
Mit der Anwendungsregistrierung kann sich Ihre App mit Azure AD B2C anmelden. Beim App-Registrierungsprozess wird eine Anwendungs-ID generiert, die auch als Client-ID bezeichnet wird und Ihre App eindeutig identifiziert. Außerdem erstellen Sie einen geheimen Clientschlüssel, der von Ihrer App zum sicheren Abrufen der Token verwendet wird.
Durch die Web-API-Registrierung kann Ihre App eine sichere Web-API aufrufen. Die Registrierung umfasst die Web-API-Bereiche. Die Bereiche bieten eine Möglichkeit, Berechtigungen für geschützte Ressourcen wie Ihre Web-API zu verwalten. Anschließend erteilen Sie Ihrer Anwendung Berechtigungen für die Web-API-Bereiche. Wenn ein Zugriffstoken angefordert wird, gibt Ihre App den
.defaultBereichsparameter der Anforderung an. Azure AD B2C gibt die Web-API-Bereiche zurück, die Ihrer App gewährt werden.
App-Architektur und -Registrierungen sind im folgenden Diagramm dargestellt:
Schritt 1: Registrieren der Web-API-App
In diesem Schritt registrieren Sie die Web-API (App 2) mit ihren Bereichen. Später erteilen Sie Ihrer Anwendung (App 1) berechtigungen für diese Bereiche. Wenn Sie bereits über eine solche App-Registrierung verfügen, überspringen Sie diesen Schritt, und wechseln Sie zum nächsten Schritt, Schritt 1.1 Definieren von Web-API-Rollen (Bereiche).
Führen Sie die folgenden Schritte aus, um die Web-API-App-Registrierung (App-ID: 2) zu erstellen:
Melden Sie sich beim Azure-Portal an.
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 wählen Sie diese Option dann aus.
Wählen Sie App-Registrierungen aus, und wählen Sie dann Registrierung einer neuen Anwendung aus.
Geben Sie für Name einen Namen für die Anwendung ein, z. B. my-api1. Behalten Sie die Standardwerte für Umleitungs-URI und Unterstützte Kontotypen bei.
Wählen Sie Registrieren aus.
Wählen Sie nach Abschluss der App-Registrierung Übersichtaus.
Notieren Sie sich die Anwendungs- bzw. Client-ID, die Sie später beim Konfigurieren der Webanwendung verwenden.
Schritt 1.1 Definieren von Web-API-Rollen (Bereiche)
In diesem Schritt konfigurieren Sie den Web-API-Anwendungs-ID-URI und definieren dann App-Rollen. Die App-Rollen, die von den OAuth 2.0-Bereichen verwendet und für eine Anwendungsregistrierung definiert sind, die Ihre API darstellt. Ihre Anwendung verwendet den Anwendungs-ID-URI mit dem .default-Bereich. Führen Sie die folgenden Schritte aus, um App-Rollen zu definieren:
Wählen Sie die web-API aus, die Sie erstellt haben, z. B. "my-api1".
Wählen Sie unter Verwalten die Option Eine API verfügbar machen aus.
Wählen Sie neben Anwendungs-ID-URI den Link Festlegen aus. Ersetzen Sie den Standardwert (GUID) durch einen eindeutigen Namen (z. B. api), und wählen Sie dann "Speichern" aus.
Kopieren Sie den Anwendungs-ID-URI. Der folgende Screenshot zeigt, wie Sie den Anwendungs-ID-URI kopieren.
Wählen Sie unter "Verwalten" die Option "Manifest " aus, um den Anwendungsmanifest-Editor zu öffnen. Suchen Sie im Editor die
appRoles-Einstellung, und definieren Sie App-Rollen, die aufapplicationsabzielen. Jede App-Rollendefinition muss über einen globalen eindeutigen Bezeichner (GUID) für denidWert verfügen. Generieren Sie eine neue GUID, indem Sie den Befehl in der Microsoft PowerShell oder einennew-guidausführen. Dievalue-Eigenschaft jeder App-Rollendefinition wird im Bereich (scp-Anspruch) angezeigt. Dievalue-Eigenschaft darf keine Leerzeichen enthalten. Im folgenden Beispiel werden zwei App-Rollen veranschaulicht: Lese- und Schreibzugriff:"appRoles": [ { "allowedMemberTypes": ["Application"], "displayName": "Read", "id": "d6a15e20-f83c-4264-8e61-5082688e14c8", "isEnabled": true, "description": "Readers have the ability to read tasks.", "value": "app.read" }, { "allowedMemberTypes": ["Application"], "displayName": "Write", "id": "204dc4ab-51e1-439f-8c7f-31a1ebf3c7b9", "isEnabled": true, "description": "Writers have the ability to create tasks.", "value": "app.write" }],Wählen Sie oben auf der Seite "Speichern" aus, um die Manifeständerungen zu speichern.
Schritt 2: Registrieren einer Anwendung
Damit Ihre App sich mit Azure AD B2C über den Clientanmeldeinformationsfluss anmelden kann, können Sie eine vorhandene Anwendung verwenden oder eine neue registrieren (App 1).
Wenn Sie eine bestehende App nutzen, stellen Sie sicher, dass die Einstellung der App accessTokenAcceptedVersion auf 2 gesetzt ist.
- Suchen Sie im Azure-Portal nach Azure AD B2C, und wählen Sie diese Option dann aus.
- Wählen Sie App-Registrierungen und dann Ihre vorhandene App aus der Liste aus.
- Wählen Sie im linken Menü unter "Verwalten" die Option "Manifest " aus, um den Manifest-Editor zu öffnen.
- Suchen Sie das
accessTokenAcceptedVersionElement, und legen Sie dessen Wert auf2. - Wählen Sie oben auf der Seite "Speichern" aus, um die Änderungen zu speichern.
Führen Sie die folgenden Schritte aus, um eine neue Web-App-Registrierung zu erstellen:
Suchen Sie im Azure-Portal nach Azure AD B2C, und wählen Sie es aus.
Wählen Sie App-Registrierungen aus, und wählen Sie dann Registrierung einer neuen Anwendung aus.
Geben Sie einen Namen für die Anwendung ein. Beispiel: ClientCredentials_app.
Lassen Sie die anderen Werte unverändert, und wählen Sie dann "Registrieren" aus.
Notieren Sie die Anwendungs-ID (Client-ID) für die Verwendung in einem späteren Schritt.
Schritt 2.1 Erstellen eines geheimen Clientschlüssels
Erstellen Sie einen geheimen Clientschlüssel für die registrierte Anwendung. Ihre App verwendet den geheimen Clientschlüssel, um seine Identität zu beweisen, wenn sie Token anfordert.
Wählen Sie unter Verwalten die Option Zertifikate und Geheimnisse aus.
Wählen Sie Neuen geheimen Clientschlüsselaus.
Geben Sie im Feld "Beschreibung " eine Beschreibung für den geheimen Clientschlüssel ein (z. B. Clientsecret1).
Wählen Sie unter Läuft ab einen Zeitraum aus, für den das Geheimnis gültig ist, und wählen Sie dann Hinzufügen aus.
Notieren Sie den Wert des Geheimnisses. Sie verwenden diesen Wert für die Konfiguration in einem späteren Schritt.
Schritt 2.2 Erteilen der App-Berechtigungen für die Web-API
Führen Sie die folgenden Schritte aus, um Ihrer App (App 1) Berechtigungen zu erteilen:
Wählen Sie App-Registrierungen und dann die app aus, die Sie erstellt haben (App 1).
Wählen Sie unter Verwaltendie Option API-Berechtigungenaus.
Wählen Sie unter Konfigurierte Berechtigungen die Option Berechtigung hinzufügen aus.
Wählen Sie die Registerkarte Meine APIs aus.
Wählen Sie die API (App 2) aus, auf die die Webanwendung Zugriff erhalten soll. Geben Sie z. B. my-api1 ein.
Wählen Sie "Anwendungsberechtigung" aus.
Erweitern Sie unter "Berechtigung" die App, und wählen Sie dann die Bereiche aus, die Sie zuvor definiert haben (z. B. "app.read " und "app.write").
Wählen Sie "Berechtigungen hinzufügen" aus.
Wählen Sie Administratorzustimmung erteilen für<Name Ihres Mandanten> aus.
Wählen Sie Ja aus.
Wählen Sie Aktualisieren aus, und vergewissern Sie sich, dass für beide Bereiche unter Status der Status Gewährt für... angezeigt wird.
Schritt 3: Abrufen eines Zugriffstokens
Es gibt keine spezifischen Maßnahmen, um die Zugangsdaten des Clients für Benutzerflüsse oder benutzerdefinierte Richtlinien zu aktivieren. Sowohl Azure AD B2C-Benutzerflüsse als auch benutzerdefinierte Richtlinien unterstützen den Clientanmeldeinformationsfluss. Wenn Sie dies noch nicht getan haben, erstellen Sie einen Benutzerablauf oder eine benutzerdefinierte Richtlinie. Verwenden Sie dann Ihre bevorzugte API-Entwicklungsanwendung, um eine Autorisierungsanforderung zu generieren. Erstellen Sie einen Aufruf wie dieses Beispiel mit den folgenden Informationen als Textkörper der POST-Anforderung:
https://<tenant-name>.b2clogin.com/<tenant-name>.onmicrosoft.com/<policy>/oauth2/v2.0/token
- Ersetzen Sie
<tenant-name>durch den Namen Ihres Azure AD B2C-Mandanten. Beispiel:contoso.b2clogin.com. - Ersetzen Sie sie
<policy>durch den vollständigen Namen Ihres Benutzerablaufs oder durch eine benutzerdefinierte Richtlinie. Beachten Sie, dass alle Arten von Benutzerflüssen und benutzerdefinierten Richtlinien den Clientanmeldeinformationsfluss unterstützen. Sie können einen beliebigen Benutzerablauf oder eine benutzerdefinierte Richtlinie verwenden oder eine neue richtlinie erstellen, z. B. Registrierung oder Anmeldung.
| Schlüssel | Wert |
|---|---|
| Authentifizierungstyp (grant_type) | client_credentials |
| Kunden-ID | Die Client-ID aus Schritt 2 Registrieren einer Anwendung. |
| client_secret (Kunden-Geheimnis) | Der Wert des geheimen Clientschlüssels aus Schritt 2.1 Erstellen eines geheimen Clientschlüssels. |
| Umfang | Der Anwendungs-ID-URI aus Schritt 1.1 Definieren von Web-API-Rollen (Bereichen) und .default. Beispiel https://contoso.onmicrosoft.com/api/.default: oder https://contoso.onmicrosoft.com/00001111-aaaa-2222-bbbb-3333cccc4444/.default. |
Die tatsächliche POST-Anforderung sieht wie im folgenden Beispiel aus:
Anforderung:
POST /<tenant-name>.onmicrosoft.com/B2C_1A_SUSI/oauth2/v2.0/token HTTP/1.1
Host: <tenant-name>.b2clogin.com
Content-Type: application/x-www-form-urlencoded
grant_type=client_credentials
&client_id=11112222-bbbb-3333-cccc-4444dddd5555
&client_secret=FyX7Q~DuPJ...
&scope=https%3A%2F%2Fcontoso.onmicrosoft.com%2Fapi%2F.default
Antwort:
{
"access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6IlBFcG5OZDlnUkNWWUc2dUs...",
"token_type": "Bearer",
"not_before": 1645172292,
"expires_in": 3600,
"expires_on": 1645175892,
"resource": "11112222-bbbb-3333-cccc-4444dddd5555"
}
Erfahren Sie mehr über die Ansprüche des zurückgegebenen Zugriffstokens. In der folgenden Tabelle werden die Ansprüche aufgeführt, die im Zusammenhang mit dem Clientanmeldeinformationenflow stehen.
| Anspruch | BESCHREIBUNG | Wert |
|---|---|---|
aud |
Identifiziert den vorgesehenen Empfänger des Tokens. | Die Client-ID der API. |
sub |
Der mit der Anwendung verknüpfte Dienstprinzipal, die die Anforderung initiiert hat. | Es handelt sich um den Dienstprinzipal von client_id der Autorisierungsanforderung. |
azp |
Autorisierte Partei – die Partei, für die das Zugriffstoken ausgestellt wurde. | Die Client-ID der Anwendung, die die Anforderung initiiert hat. Es ist derselbe Wert, den Sie in der client_id Autorisierungsanforderung angegeben haben. |
scp |
Der Satz von Bereichen, die von Ihrer Anwendungs-API (Leerzeichen als Trennzeichen) verfügbar gemacht werden. | Im Client-Credentials-Flow fordert die Autorisierungsanfrage den Bereich .default an, während das Token die Liste der von der API bereitgestellten Bereiche enthält, denen der App-Administrator zugestimmt hat. Beispiel: app.read app.write. |
Schritt 3.1 Abrufen eines Zugriffstokens mit Skript
Verwenden Sie das folgende PowerShell-Skript, um Ihre Konfiguration zu testen:
$appId = "<client ID>"
$secret = "<client secret>"
$endpoint = "https://<tenant-name>.b2clogin.com/<tenant-name>.onmicrosoft.com/<policy>/oauth2/v2.0/token"
$scope = "<Your API id uri>/.default"
$body = "grant_type=client_credentials&scope=" + $scope + "&client_id=" + $appId + "&client_secret=" + $secret
$token = Invoke-RestMethod -Method Post -Uri $endpoint -Body $body
Verwenden Sie das folgende cURL-Skript, um Ihre Konfiguration zu testen:
curl --location --request POST 'https://<your-tenant>.b2clogin.com/<your-tenant>.onmicrosoft.com/<policy>/oauth2/v2.0/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--form 'grant_type="client_credentials"' \
--form 'client_id="<client ID>"' \
--form 'client_secret="<client secret>"' \
--form 'scope="<Your API id uri>/.default"'
Schritt 4: Anpassen des Tokens
Dieses Feature ist nur für benutzerdefinierte Richtlinien verfügbar. Wählen Sie für Setupschritte im vorherigen Selektor die Option "Benutzerdefinierte Richtlinie " aus.
Benutzerdefinierte Richtlinien bieten eine Möglichkeit zum Erweitern des Tokenausstellungsprozesses. Um die Benutzerreise der OAuth 2.0-Clientanmeldeinformationen anzupassen, befolgen Sie die Anleitung zum Konfigurieren einer Benutzerreise mit Clientanmeldeinformationen. Fügen Sie dann im JwtIssuer technischen Profil die ClientCredentialsUserJourneyId Metadaten mit einem Verweis auf die von Ihnen erstellte Benutzerreise hinzu.
Im folgenden Beispiel wird gezeigt, wie Sie dem technischen Profil des Tokenausstellers die ClientCredentialsUserJourneyId hinzufügen.
<TechnicalProfile Id="JwtIssuer">
<Metadata>
<Item Key="ClientCredentialsUserJourneyId">ClientCredentialsJourney</Item>
</Metadata>
</TechnicalProfile>
Das folgende Beispiel zeigt eine Benutzererfahrung mit Client-Anmeldedaten. Die ersten und die letzten Orchestrierungsschritte sind erforderlich.
<UserJourneys>
<UserJourney Id="ClientCredentialsJourney">
<OrchestrationSteps>
<!-- [Required] Do the client credentials -->
<OrchestrationStep Order="1" Type="ClaimsExchange">
<ClaimsExchanges>
<ClaimsExchange Id="ClientCredSetupExchange" TechnicalProfileReferenceId="ClientCredentials_Setup" />
</ClaimsExchanges>
</OrchestrationStep>
<!-- [Optional] Call a REST API or claims transformation -->
<OrchestrationStep Order="2" Type="ClaimsExchange">
<ClaimsExchanges>
<ClaimsExchange Id="TokenAugmentation" TechnicalProfileReferenceId="TokenAugmentation" />
</ClaimsExchanges>
</OrchestrationStep>
<!-- [Required] Issue the access token -->
<OrchestrationStep Order="3" Type="SendClaims" CpimIssuerTechnicalProfileReferenceId="JwtIssuer" />
</OrchestrationSteps>
</UserJourney>
</UserJourneys>