Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Deze handleiding begeleidt u bij het configureren van Microsoft Entra ID-verificatie (voorheen Azure Active Directory) voor Data API Builder. Aan het einde verifieert uw client-app gebruikers via Entra, verkrijgt tokens voor Data API Builder en KAN DAB beheerde identiteit gebruiken om verbinding te maken met Azure SQL.
Data API Builder verifieert binnenkomende aanvragen met JWT Bearer-validatie (EntraID/AzureAD/Custom) of door het platform geleverde identiteitsheaders ().AppService Gebruik de Simulator provider voor het testen van lokale ontwikkeling en machtigingen.
Gidsen voor authenticatieprovider
Kies een handleiding op basis van uw id-provider:
| Provider | Guide |
|---|---|
| Microsoft Entra ID | Dit artikel |
| Okta, Auth0 of andere | Aangepaste JWT-verificatie configureren |
| Azure App Service | App Service-verificatie configureren |
| Lokaal testen | Simulatorverificatie configureren |
Authenticatiestroom
In het volgende diagram ziet u de volledige verificatiestroom bij het gebruik van Microsoft Entra-id met Data API Builder:
De stroom heeft drie verschillende fasen:
| Phase | Description |
|---|---|
| Gebruikersverificatie | Gebruiker meldt zich aan via uw client-app via Microsoft Entra ID |
| Clientauthenticatie | Client-app verkrijgt een DAB-token en roept Data API Builder aan |
| Databasetoegang | Data API Builder valideert het token en maakt vervolgens verbinding met de database met behulp van een eigen identiteit (beheerde identiteit of verbindingsreeksreferenties) |
Belangrijk
Data API Builder valideert het binnenkomende gebruikerstoken voor API-verificatie, maar maakt verbinding met de database met behulp van eigen referenties (beheerde identiteit of SQL-verificatie). DAB voert geen On-Behalf-Of (OBO) tokenuitwisseling uit om toegang te krijgen tot de database als zijnde de aanroepende gebruiker.
Vereiste voorwaarden
- Een Azure-abonnement met Microsoft Entra ID-tenant
- Data API Builder CLI geïnstalleerd (installatiehandleiding)
- Een bestaande
dab-config.jsonmet ten minste één entiteit - (Optioneel) Scenario's voor beheerde identiteiten in Azure SQL Database
Snelzoekgids
| Configuratie | Waarde |
|---|---|
| Provider |
EntraID (of AzureAD voor compatibiliteit) |
| Vereist voor validatie |
aud, , issexpgeldige handtekening |
| Vereist voor autorisatie |
roles claim (alleen als u aangepaste rollen gebruikt) |
| Formaat van uitgever | https://login.microsoftonline.com/<tenant-id>/v2.0 |
| Doelgroepindeling |
api://<app-id> of aangepaste Applicatie-ID URI |
| Standaardrol | Authenticated |
| Aangepaste rolheader | X-MS-API-ROLE |
| Type roltoewijzing |
roles (opgelost, niet configureerbaar) |
Opmerking
Wanneer u EntraID of AzureAD als provider gebruikt, maakt DAB de validatie van extra ondertekeningssleutelverleners mogelijk die specifiek zijn voor Microsoft Entra-tokens. Dit biedt een sterkere beveiliging in vergelijking met de algemene Custom provider.
Stap 1: Een toepassing registreren in Microsoft Entra-id
Maak een app-registratie die uw Data API Builder-API vertegenwoordigt. Client-apps vragen tokens aan met een doelgroep die overeenkomt met deze registratie.
Meld u aan bij het Microsoft Entra-beheercentrum.
Navigeer naar Identiteit>Toepassingen>App-registraties.
Selecteer Nieuwe registratie.
Voer een naam in (bijvoorbeeld
Data API Builder API).Selecteer de juiste ondersteunde accounttypen voor uw scenario:
- Eén tenant: alleen gebruikers in uw organisatie
- Multitenant: gebruikers in elke Microsoft Entra-directory
Laat de omleidings-URI leeg (deze registratie is voor de API, niet voor de client).
Selecteer Registreren.
Noteer deze waarden op de overzichtspagina van de app:
Waarde Waar vind ik het? Gebruikt voor Applicatie (cliënt) ID Overzichtspagina De doelgroep-URI bouwen Directory (huurder) ID Overzichtspagina De URL van de uitgever bouwen
Configureer de toepassings-ID URI
Ga in de app-registratie naar Een API beschikbaar maken.
Selecteer Toevoegen naast de URI van de toepassings-id.
Accepteer de standaardwaarde (
api://<app-id>) of voer een aangepaste URI in.Selecteer Opslaan.
Aanbeveling
De URI van de toepassings-id wordt de audience waarde in uw DAB-configuratie. Gebruik een consistente indeling in verschillende omgevingen.
App-rollen toevoegen (optioneel)
Als u aangepaste rollen wilt gebruiken buiten Anonymous en Authenticated:
Ga naar App-rollen.
Selecteer App-rol aanmaken.
Binnenkomen:
-
Weergavenaam:
Reader - Toegestane lidtypen: gebruikers/groepen of beide
-
Waarde:
reader(deze waarde wordt weergegeven in de claim vanroleshet token) -
Beschrijving:
Read-only access to data
-
Weergavenaam:
Selecteer de optie Toepassen.
Herhaal dit voor extra rollen (bijvoorbeeld
writer,admin).
Stap 2: Data API Builder configureren
Configureer DAB om tokens te valideren die zijn uitgegeven door uw Entra-tenant voor uw API-doelgroep.
CLI (Command Line Interface)
# 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"
Resulterende configuratie
{
"runtime": {
"host": {
"authentication": {
"provider": "EntraID",
"jwt": {
"audience": "api://<your-app-id>",
"issuer": "https://login.microsoftonline.com/<your-tenant-id>/v2.0"
}
}
}
}
}
Stap 3: Entiteitsmachtigingen configureren
Definieer welke rollen toegang hebben tot elke entiteit. Aanvragen worden geëvalueerd op basis van de rol die is bepaald op basis van het token.
Toegang verlenen aan geverifieerde gebruikers
dab update Book \
--permissions "Authenticated:read"
Toegang verlenen tot een aangepaste rol
dab update Book \
--permissions "reader:read" \
--permissions "writer:create,read,update"
Resulterende configuratie
{
"entities": {
"Book": {
"source": "dbo.Books",
"permissions": [
{
"role": "Authenticated",
"actions": ["read"]
},
{
"role": "reader",
"actions": ["read"]
},
{
"role": "writer",
"actions": ["create", "read", "update"]
}
]
}
}
}
Stap 4: Databaseverbinding configureren
Data API Builder maakt verbinding met de database met behulp van een eigen identiteit, gescheiden van de geverifieerde gebruiker. Gebruik beheerde identiteit voor productiescenario's met Azure SQL.
Opmerking
De databaseverbinding maakt gebruik van de service-id van DAB (beheerde identiteit of SQL-referenties), niet de identiteit van de aanroepende gebruiker. DAB geeft geen gebruikerstokens door aan de database.
Optie A: Beheerde identiteit (aanbevolen voor Azure)
Door het systeem toegewezen beheerde identiteit
{
"data-source": {
"database-type": "mssql",
"connection-string": "Server=tcp:<server>.database.windows.net,1433;Initial Catalog=<database>;Authentication=Active Directory Managed Identity;Encrypt=True;"
}
}
Door de gebruiker toegewezen beheerde identiteit
{
"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;"
}
}
Optie B: SQL-verificatie (ontwikkeling)
{
"data-source": {
"database-type": "mssql",
"connection-string": "@env('SQL_CONNECTION_STRING')"
}
}
Belangrijk
Voer nooit verbindingsreeksen door met wachtwoorden voor broncodebeheer. Omgevingsvariabelen of Azure Key Vault gebruiken.
Optie C: Lokale ontwikkeling met az login
Gebruik uw Azure CLI-referenties voor lokale ontwikkeling in Azure SQL:
{
"data-source": {
"database-type": "mssql",
"connection-string": "Server=tcp:<server>.database.windows.net,1433;Initial Catalog=<database>;Authentication=Active Directory Default;Encrypt=True;"
}
}
Meld u aan voordat u DAB start:
az login
Stap 5: De configuratie testen
Start Data API Builder:
dab startEen token verkrijgen voor uw API. Gebruik de Microsoft Authentication Library (MSAL) of een hulpprogramma zoals jwt.ms voor testen.
Roep de API aan met het token:
curl -X GET "http://localhost:5000/api/Book" \ -H "Authorization: Bearer <your-token>"Als u een aangepaste rol wilt gebruiken, neemt u de
X-MS-API-ROLEheader op:curl -X GET "http://localhost:5000/api/Book" \ -H "Authorization: Bearer <your-token>" \ -H "X-MS-API-ROLE: reader"
Opmerking
De opgegeven rol X-MS-API-ROLE moet bestaan in de roles-claim van het token. Als de rol niet in het token staat, wordt de aanvraag geweigerd.
Gedrag van rolselectie
Data API Builder bepaalt de rol van de aanvraag met behulp van deze logica:
| Is de token aanwezig? | X-MS-API-ROLE koptekst? | Rol binnen de token? | Resultaat |
|---|---|---|---|
| Nee. | Nee. | — | Anonymous |
| Ja (geldig) | Nee. | — | Authenticated |
| Ja (geldig) | Yes | Nee. | Geweigerd (403 Verboden) |
| Ja (geldig) | Yes | Yes | Headerwaarde |
| Ja (ongeldig) | — | — | Geweigerd (401 Niet geautoriseerd) |
Probleemoplossingsproces
| Symptoom | Mogelijke oorzaak | Solution |
|---|---|---|
401 Unauthorized |
Token verlopen of onjuist | Een nieuw token verkrijgen; token controleren op jwt.ms |
401 Unauthorized |
Doelgroep komt niet overeen | Controleer of jwt.audience overeenkomt met de claim van aud van het token |
401 Unauthorized |
Verlener komt niet overeen | Controleer of jwt.issuer exact overeenkomt met de claim van iss van het token. |
403 Forbidden |
Rol niet in token | Zorg ervoor dat de gebruiker de app-rol in Entra toegewezen krijgt |
403 Forbidden |
Geen machtigingen voor rol | Voeg de rol toe aan de permissions-array van de entiteit |
Volledig configuratievoorbeeld
{
"$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"]
}
]
}
}
}