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 (EntraID/AzureAD/Custom) oder plattformbezogener Identitätsheader (AppService). Verwenden Sie für lokale Entwicklungs- und Berechtigungstests den Simulator Anbieter.
Authentifizierungsanbieterhandbücher
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 der App Service-Authentifizierung |
| Lokale Tests | Konfigurieren der Simulatorauthentifizierung |
Authentifizierungsfluss
Der Fluss weist drei verschiedene Phasen auf:
| Phase | Beschreibung |
|---|---|
| Benutzerauthentifizierung | Der Benutzer meldet sich über Ihre Client-App über die Microsoft Entra-ID an. |
| Clientauthentifizierung | Client-App erwirbt ein DAB-bezogenes Token und ruft den Data-API-Builder auf. |
| Datenbankzugriff | Der Data-API-Builder validiert das Token und verbindet sich dann unter Verwendung seiner eigenen Identität (verwaltete Identität oder Anmeldeinformationen aus der Verbindungszeichenfolge) mit der Datenbank. |
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 standardmäßig keinen On-Behalf-Of (OBO)-Tokenaustausch durch, um als aufrufender Benutzer auf die Datenbank zuzugreifen. Um OBO zu aktivieren, sodass die Datenbank als der tatsächliche Anrufer authentifiziert wird, lesen Sie Konfigurieren der OBO-Authentifizierung.
Voraussetzungen
- Ein Azure-Abonnement mit einem Microsoft Entra ID Mandant
- Installierte CLI des Daten-API-Generators (Installationshandbuch)
- Eine vorhandene
dab-config.jsonmit mindestens einer Entität - (Optional) Azure SQL-Datenbank für Szenarien mit verwalteter Identität
Kurzreferenz
| Setting | Wert |
|---|---|
| Provider |
EntraID (oder AzureAD aus Kompatibilitätsgründen) |
| Erforderlich für die Überprüfung |
aud, iss, expgültige Signatur |
| Erforderlich für die Autorisierung |
roles Anspruchsrecht (nur bei der Verwendung benutzerdefinierter Rollen) |
| Ausstellerformat | https://login.microsoftonline.com/<tenant-id>/v2.0 |
| Zielgruppenformat |
api://<app-id> oder benutzerdefinierter Anwendungs-ID-URI |
| Standardrolle | Authenticated |
| Benutzerdefinierte Rollenüberschrift | X-MS-API-ROLE |
| Rollenanspruchstyp |
roles (behoben, nicht konfigurierbar) |
Hinweis
Wenn Sie EntraID oder AzureAD 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 Custom 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 Identität>Anwendungen>App-Registrierungen.
Wählen Sie Neue Registrierung aus.
Geben Sie einen Namen ein (z. B
Data API Builder API. ).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 Verwendung 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 (
api://<app-id>) oder geben Sie einen benutzerdefinierten URI ein.Wählen Sie "Speichern" aus.
Tipp
Der Anwendungs-ID-URI wird zum audience 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:
-
Bereichsname:
Endpoint.Access - Zum Einwilligen berechtigte Personen: Administratoren und Benutzer
-
Anzeigename der Administratoreinwilligung:
Execute requests against Data API builder -
Beschreibung der Administratoreinwilligung:
Allows client app to send requests to Data API builder endpoint. -
Anzeigename der Benutzereinwilligung:
Execute requests against Data API builder -
Beschreibung der Benutzereinwilligung:
Allows client app to send requests to Data API builder endpoint. - Status:Aktiviert
-
Bereichsname:
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 Anonymous verwenden möchten:Authenticated
Wechseln Sie zu App-Rollen.
Wählen Sie " App-Rolle erstellen" aus.
Geben Sie Folgendes ein:
-
Anzeigename:
Reader - Zulässige Mitgliedertypen: Benutzer/Gruppen oder beides
-
Wert:
reader(dieser Wert wird im Anspruch desrolesTokens angezeigt) -
Beschreibung:
Read-only access to data
-
Anzeigename:
Wählen Sie Anwenden.
Wiederholen Sie diesen Vorgang für weitere Rollen (z. B.
writer,admin).
Festlegen der Manifesttokenversion
Standardmäßig legt das App-Registrierungsmanifest accessTokenAcceptedVersion auf null fest, wodurch v1.0-Token erzeugt werden. 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
accessTokenAcceptedVersionund ändern Sie den Wert in2.Wählen Sie "Speichern" aus.
Von Bedeutung
Wenn accessTokenAcceptedVersionnull oder 1 ist, stimmt der iss-Anspruch im Token nicht mit der in DAB konfigurierten v2.0-Aussteller-URL überein, und alle Anforderungen schlagen mit 401 Unauthorized 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 Identity>Applications>Enterprise-Anwendungen.
Suchen und wählen Sie Ihre App (z. B.
Data API Builder API). 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.
Reader). 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 roles Anspruch im Token des Benutzers leer, und Anforderungen, die mit einer benutzerdefinierten Rolle X-MS-API-ROLE verwendet werden, werden mit 403 Forbidden abgelehnt.
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.
CLI
# 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
dab update Book \
--permissions "Authenticated:read"
Zugriff auf eine benutzerdefinierte Rolle gewähren
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 az login
Verwenden Sie für die lokale Entwicklung mit 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 inspizieren, um die Ansprüche aud, iss und roles 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
X-MS-API-ROLEKopfzeile ein:curl -X GET "http://localhost:5000/api/Book" \ -H "Authorization: Bearer <your-token>" \ -H "X-MS-API-ROLE: reader"
Hinweis
Die im X-MS-API-ROLE angegebene Rolle muss im Anspruch des roles 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 |
|---|---|---|---|
| No | No | — | Anonymous |
| Ja (gültig) | No | — | Authenticated |
| Ja (gültig) | Ja | No | Abgelehnt (403 Verboten) |
| Ja (gültig) | Ja | Ja | 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 jwt.audience mit dem Anspruch des Tokens aud übereinstimmt |
401 Unauthorized |
Ausstellerkonflikt | Überprüfen Sie, ob der Anspruch des Tokens jwt.issuer exakt mit iss ü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 permissions |
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"]
}
]
}
}
}