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.
Dieses Handbuch führt Sie durch das Konfigurieren der Microsoft Entra ID-Authentifizierung (vormals Azure Active Directory) für den Daten-API-Generator. Am Ende authentifiziert Ihre Client-App Benutzer über Entra, erwirbt Token für den Daten-API-Generator, und DAB kann verwaltete Identität verwenden, um eine Verbindung mit Azure SQL herzustellen.
Der Daten-API-Generator authentifiziert eingehende Anforderungen entweder mithilfe der JSON Web Token(JWT)-Bearerüberprüfung () oder plattformbezogener Identitätsheader (). Verwenden Sie für lokale Entwicklungs- und Berechtigungstests den Anbieter.
Abbildung der Authentifizierung von Clients beim Daten-API-Generator mithilfe von JWT-Token.
Guides des Authentifizierungsanbieters
Wählen Sie einen Leitfaden basierend auf Ihrem Identitätsanbieter aus:
| Provider | Guide |
|---|---|
| Microsoft Entra ID | Dieser Artikel |
| Okta, Auth0 oder andere | Konfigurieren der benutzerdefinierten JWT-Authentifizierung |
| Azure App Service | Konfigurieren Sie die App Service Authentifizierung |
| Lokale Tests | Konfigurieren der Simulatorauthentifizierung |
Authentifizierungsfluss
Der Fluss weist drei verschiedene Phasen auf:
| Phase | Description |
|---|---|
| Benutzerauthentifizierung | Benutzer meldet sich über Ihre Client-App mit Microsoft Entra ID an. |
| Clientauthentifizierung | Client-App erwirbt ein DAB-bezogenes Token und ruft den Data-API-Builder auf. |
| Datenbankzugriff | Der Daten-API-Generator überprüft das Token und stellt dann mithilfe einer eigenen Identität (verwaltete Identität oder connection string Anmeldeinformationen) eine Verbindung mit der Datenbank bereit. |
Von Bedeutung
Der Daten-API-Generator überprüft das eingehende Benutzertoken für die API-Authentifizierung, stellt jedoch eine Verbindung mit der Datenbank mithilfe eigener Anmeldeinformationen (verwaltete Identität oder SQL-Authentifizierung) bereit. DAB führt keinen On-Behalf-Of(OBO)-Token-Austausch durch, um auf die Datenbank im Auftrag des aufrufenden Benutzers zuzugreifen.
Voraussetzungen
- Ein Azure-Abonnement mit einem Microsoft Entra ID Mandant
- Installierte CLI des Daten-API-Generators (Installationshandbuch)
- Eine vorhandene mit mindestens einer Entität
- (Optional) Azure SQL Database für Szenarien mit verwalteter Identität
Kurzreferenz
| Setting | Wert |
|---|---|
| Provider | (oder aus Kompatibilitätsgründen) |
| Erforderlich für die Überprüfung | , , gültige Signatur |
| Erforderlich für die Autorisierung | Anspruchsrecht (nur bei der Verwendung benutzerdefinierter Rollen) |
| Ausstellerformat | https://login.microsoftonline.com/<tenant-id>/v2.0 |
| Zielgruppenformat | oder benutzerdefinierter Anwendungs-ID-URI |
| Standardrolle | Authenticated |
| Benutzerdefinierte Rollenüberschrift | X-MS-API-ROLE |
| Rollenanspruchstyp | (behoben, nicht konfigurierbar) |
Hinweis
Wenn Sie oder als Anbieter verwenden, ermöglicht DAB eine zusätzliche Signaturschlüsselherausgeberüberprüfung speziell für Microsoft Entra Token. Diese Überprüfung bietet eine stärkere Sicherheit im Vergleich zum generischen Anbieter.
Schritt 1: Registrieren einer Anwendung in Microsoft Entra ID
Erstellen Sie eine App-Registrierung, die Ihre Daten-API-Generator-API darstellt. Client-Apps fordern Token mit einer Zielgruppe an, die dieser Registrierung entspricht.
Melden Sie sich beim Microsoft Entra Admin Center an.
Navigieren Sie zu Identity>Applications>App registrations.
Wählen Sie Neue Registrierung aus.
Geben Sie einen Namen ein (z. B . ).
Wählen Sie die entsprechenden unterstützten Kontotypen für Ihr Szenario aus:
- Einzelner Mandant: Nur Benutzer in Ihrer Organisation
- Multitenant: Benutzer in einem beliebigen Microsoft Entra Verzeichnis
Lassen Sie den Umleitungs-URI leer (diese Registrierung gilt für die API, nicht für den Client).
Wählen Sie Registrieren aus.
Notieren Sie sich auf der Seite "Übersicht" der App die folgenden Werte:
Wert Wo sie zu finden ist Syntaxelemente Anwendungs-ID (Client) Seite „Übersicht“ Erstellung der Nutzergruppe-URI Verzeichnis-ID (Mandant) Seite „Übersicht“ Erstellen der Aussteller-URL
Konfigurieren der Anwendungs-ID-URI
Wechseln Sie in der App-Registrierung zu "Verfügbarmachen einer API".
Wählen Sie neben Anwendungs-ID-URI die Option Hinzufügen aus.
Übernehmen Sie den Standardwert () oder geben Sie einen benutzerdefinierten URI ein.
Wählen Sie Speichern aus.
Tipp
Der Anwendungs-ID-URI wird zum Wert in Ihrer DAB-Konfiguration. Verwenden Sie ein einheitliches Format in allen Umgebungen.
Hinzufügen eines Geltungsbereichs
Ein Berechtigungsbereich ist erforderlich, damit Clientanwendungen (einschließlich Azure CLI) delegierte Zugriffstoken für Ihre API anfordern können.
Wechseln Sie in der App-Registrierung zu "Verfügbarmachen einer API".
Wählen Sie unter Durch diese API definierte Bereiche die Option Bereich hinzufügen aus.
Geben Sie Folgendes ein:
-
Scope-Name:
Endpoint.Access - Zum Einwilligen berechtigte Personen: Administratoren und Benutzer
- Anzeigename der Administratoreinwilligung:
- Beschreibung der Administratoreinwilligung:
- Anzeigename der Benutzereinwilligung:
- Beschreibung der Benutzereinwilligung:
- Status:Aktiviert
-
Scope-Name:
Wählen Sie "Bereich hinzufügen" aus.
Hinweis
Der vollständige Bereichswert ist api://<app-id>/Endpoint.Access. Clientanwendungen verwenden diesen Wert beim Anfordern von Token.
Hinzufügen von App-Rollen (optional)
Wenn Sie benutzerdefinierte Rollen über folgendes hinaus verwenden möchten:
Wechseln Sie zu App-Rollen.
Wählen Sie " App-Rolle erstellen" aus.
Geben Sie Folgendes ein:
- Anzeigename:
- Zulässige Mitgliedertypen: Benutzer/Gruppen oder beides
- Wert: (dieser Wert wird im Anspruch des Tokens angezeigt)
-
Description:
Read-only access to data
Wählen Sie Apply aus.
Wiederholen Sie diesen Vorgang für weitere Rollen (z. B . , ).
Festlegen der Manifesttokenversion
Standardmäßig wird das App-Registrierungsmanifest auf v1.0-Token festgelegt. V1-Token verwenden ein anderes Ausstellerformat (https://sts.windows.net/<tenant-id>/) als der in DAB konfigurierte v2.0-Aussteller, wodurch die Tokenüberprüfung fehlschlägt.
Wechseln Sie in der App-Registrierung zu "Manifest".
Suchen Sie und ändern Sie den Wert in .
Wählen Sie Speichern aus.
Von Bedeutung
Wenn [Bedingung] eintritt oder [eine andere Bedingung], stimmt der Anspruch im Token nicht mit der in DAB konfigurierten v2.0-Aussteller-URL überein, und alle Anforderungen schlagen mit [Fehlermeldung] fehl.
Benutzer zu App-Rollen zuweisen
Durch das Erstellen von App-Rollen werden diese nicht automatisch den Benutzern zugewiesen. Sie müssen Benutzer oder Gruppen über die Enterprise-Anwendung zuweisen.
Navigieren Sie im Microsoft Entra Admin Center zu IdentityApplicationsEnterprise-Anwendungen.
Suchen und wählen Sie Ihre Anwendung aus (z. B.). Eine Unternehmensanwendung wurde automatisch erstellt, wenn Sie die App registriert haben.
Wechseln Sie zu "Benutzer und Gruppen".
Wählen Sie Benutzer/Gruppe hinzufügen aus.
Wählen Sie unter "Benutzer" das Benutzerkonto aus, das Zugewiesen werden soll, und wählen Sie "Auswählen" aus.
Wählen Sie unter "Rolle auswählen" die Rolle aus, die zugewiesen werden soll (z. B. ). Wenn Ihre Rolle nicht angezeigt wird, haben Sie bitte etwas Geduld und warten einige Minuten, bis die Replikation von Microsoft Entra abgeschlossen ist.
Wählen Sie Zuweisen aus.
Wiederholen Sie diesen Vorgang für jede Rolle, die Sie zuweisen möchten.
Hinweis
Ohne Rollenzuweisung ist der
Schritt 2: Konfigurieren des Daten-API-Generators
Konfigurieren Sie DAB, um token zu überprüfen, die von Ihrem Entra-Mandanten für Ihre API-Zielgruppe ausgestellt wurden.
Befehlszeilenschnittstelle (CLI)
- Bash
- Eingabeaufforderung
# Set the authentication provider
dab configure \
--runtime.host.authentication.provider EntraID
# Set the expected audience (Application ID URI)
dab configure \
--runtime.host.authentication.jwt.audience "api://<your-app-id>"
# Set the expected issuer (your tenant)
dab configure \
--runtime.host.authentication.jwt.issuer "https://login.microsoftonline.com/<your-tenant-id>/v2.0"
Resultierende Konfiguration
{
"runtime": {
"host": {
"authentication": {
"provider": "EntraID",
"jwt": {
"audience": "api://<your-app-id>",
"issuer": "https://login.microsoftonline.com/<your-tenant-id>/v2.0"
}
}
}
}
}
Schritt 3: Konfigurieren von Entitätsberechtigungen
Definieren Sie, welche Rollen auf jede Entität zugreifen können. Anforderungen werden anhand der vom Token ermittelten Rolle ausgewertet.
Gewährung von Zugriff für authentifizierte Benutzer
- Bash
- Eingabeaufforderung
dab update Book \
--permissions "Authenticated:read"
Zugriff auf eine benutzerdefinierte Rolle gewähren
- Bash
- Eingabeaufforderung
dab update Book \
--permissions "reader:read" \
--permissions "writer:create,read,update"
Resultierende Konfiguration
{
"entities": {
"Book": {
"source": "dbo.Books",
"permissions": [
{
"role": "Authenticated",
"actions": ["read"]
},
{
"role": "reader",
"actions": ["read"]
},
{
"role": "writer",
"actions": ["create", "read", "update"]
}
]
}
}
}
Schritt 4: Konfigurieren der Datenbankverbindung
Der Daten-API-Generator stellt eine Verbindung mit der Datenbank mithilfe einer eigenen Identität her, getrennt vom authentifizierten Benutzer. Verwenden Sie für Produktionsszenarien mit Azure SQL verwaltete Identität.
Hinweis
Die Datenbankverbindung verwendet die Dienstidentität von DAB (verwaltete Identität oder SQL-Anmeldeinformationen), nicht die Identität des aufrufenden Benutzers. DAB übergibt keine Benutzertoken an die Datenbank.
Option A: Verwaltete Identität (empfohlen für Azure)
Vom System zugewiesene verwaltete Identität
{
"data-source": {
"database-type": "mssql",
"connection-string": "Server=tcp:<server>.database.windows.net,1433;Initial Catalog=<database>;Authentication=Active Directory Managed Identity;Encrypt=True;"
}
}
Vom Benutzer zugewiesene verwaltete Identität
{
"data-source": {
"database-type": "mssql",
"connection-string": "Server=tcp:<server>.database.windows.net,1433;Initial Catalog=<database>;Authentication=Active Directory Managed Identity;User Id=<uami-client-id>;Encrypt=True;"
}
}
Option B: SQL-Authentifizierung (Entwicklung)
{
"data-source": {
"database-type": "mssql",
"connection-string": "@env('SQL_CONNECTION_STRING')"
}
}
Von Bedeutung
Verbindungszeichenfolgen mit Kennwörtern für die Quellcodeverwaltung niemals übernehmen. Verwenden Sie Umgebungsvariablen oder Azure Key Vault.
Option C: Lokale Entwicklung mit
Verwenden Sie für die lokale Entwicklung gegen Azure SQL Ihre Azure CLI Anmeldeinformationen:
{
"data-source": {
"database-type": "mssql",
"connection-string": "Server=tcp:<server>.database.windows.net,1433;Initial Catalog=<database>;Authentication=Active Directory Default;Encrypt=True;"
}
}
Melden Sie sich vor dem Starten von DAB an:
az login
Schritt 5: Testen der Konfiguration
Autorisieren von Azure CLI als Clientanwendung
Bevor Azure CLI Token für Ihre API abrufen können, müssen Sie sie als autorisierte Clientanwendung hinzufügen.
Wechseln Sie in der App-Registrierung zu "Verfügbarmachen einer API".
Wählen Sie unter Autorisierte Clientanwendungen die Option Eine Clientanwendung hinzufügen aus.
Geben Sie die Azure CLI Client-ID ein:
00001111-aaaa-2222-bbbb-3333cccc4444.Wählen Sie den Bereich
api://<app-id>/Endpoint.Accessaus.Wählen Sie "Anwendung hinzufügen" aus.
Token mit Azure CLI abrufen
Melden Sie sich bei Azure CLI an, und legen Sie den Mandanten fest, in dem Ihre App-Registrierung vorhanden ist:
az login
az account set --tenant <your-tenant-id>
Fordern Sie ein Token an, das auf Ihre API abgestimmt ist.
az account get-access-token --scope api://<your-app-id>/Endpoint.Access --query "accessToken" -o tsv
Hinweis
Wenn Sie einen AADSTS65001 Zustimmungsfehler erhalten haben, überprüfen Sie, ob Sie die Azure CLI Client-ID (00001111-aaaa-2222-bbbb-3333cccc4444) als autorisierte Clientanwendung im vorherigen Schritt hinzugefügt haben.
Sie können das Token bei jwt.ms überprüfen, um die Ansprüche zu überprüfen.
Starten von DAB und Senden einer Anforderung
Starten des Daten-API-Generators:
dab startRufen Sie die API mit dem Token auf:
curl -X GET "http://localhost:5000/api/Book" \ -H "Authorization: Bearer <your-token>"Um eine benutzerdefinierte Rolle zu verwenden, schließen Sie die Kopfzeile ein:
curl -X GET "http://localhost:5000/api/Book" \ -H "Authorization: Bearer <your-token>" \ -H "X-MS-API-ROLE: reader"
Hinweis
Die im angegebene Rolle muss im Anspruch des Tokens enthalten sein. Wenn sich die Rolle nicht im Token befindet, wird die Anforderung abgelehnt.
Rollenauswahlverhalten
Der Daten-API-Generator bestimmt die Rolle der Anforderung mithilfe dieser Logik:
| Token vorhanden? | X-MS-API-ROLE Header? | Rolle im Token? | Ergebnis |
|---|---|---|---|
| Nein | Nein | — | Anonymous |
| Ja (gültig) | Nein | — | Authenticated |
| Ja (gültig) | Yes | Nein | Abgelehnt (403 Verboten) |
| Ja (gültig) | Yes | Yes | Kopfzeilenwert |
| Ja (ungültig) | — | — | Abgelehnt (401 Nicht autorisiert) |
Problembehandlung
| Symptom | Mögliche Ursache | Lösung |
|---|---|---|
401 Unauthorized |
Token abgelaufen oder falsch formatiert | Einen neuen Token abrufen; Token bei jwt.ms überprüfen. |
401 Unauthorized |
Benutzergruppenkonflikt | Überprüfen, ob mit dem Anspruch des Tokens übereinstimmt |
401 Unauthorized |
Ausstellerkonflikt | Überprüfen Sie, ob der Anspruch des Tokens exakt mit übereinstimmt. |
403 Forbidden |
Rolle nicht im Token | Stellen Sie sicher, dass der Benutzer der App-Rolle in Entra zugewiesen ist. |
403 Forbidden |
Keine Berechtigungen für die Rolle | Hinzufügen der Rolle zum Array der Entität |
Vollständiges Konfigurationsbeispiel
{
"$schema": "https://github.com/Azure/data-api-builder/releases/latest/download/dab.draft.schema.json",
"data-source": {
"database-type": "mssql",
"connection-string": "Server=tcp:myserver.database.windows.net,1433;Initial Catalog=mydb;Authentication=Active Directory Managed Identity;Encrypt=True;"
},
"runtime": {
"host": {
"authentication": {
"provider": "EntraID",
"jwt": {
"audience": "api://dab-api-12345678",
"issuer": "https://login.microsoftonline.com/contoso.onmicrosoft.com/v2.0"
}
}
}
},
"entities": {
"Book": {
"source": "dbo.Books",
"permissions": [
{
"role": "Authenticated",
"actions": ["read"]
},
{
"role": "librarian",
"actions": ["create", "read", "update", "delete"]
}
]
}
}
}
Verwandte Inhalte
- Autorisierung und Rollen
- Konfigurieren der Simulatorauthentifizierung für Tests
- App-Dienst-Authentifizierung konfigurieren
- Referenz zur Laufzeitkonfiguration