Delen via


Microsoft Entra ID-verificatie configureren

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.

Afbeelding van hoe clients worden geverifieerd bij Data API Builder met behulp van JWT-tokens.

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:

Afbeelding van de Verificatievolgorde van Microsoft Entra-id met gebruikersaanmelding, tokenverwerving en databasetoegang.

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.json met 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.

  1. Meld u aan bij het Microsoft Entra-beheercentrum.

  2. Navigeer naar Identiteit>Toepassingen>App-registraties.

  3. Selecteer Nieuwe registratie.

  4. Voer een naam in (bijvoorbeeld Data API Builder API).

  5. Selecteer de juiste ondersteunde accounttypen voor uw scenario:

    • Eén tenant: alleen gebruikers in uw organisatie
    • Multitenant: gebruikers in elke Microsoft Entra-directory
  6. Laat de omleidings-URI leeg (deze registratie is voor de API, niet voor de client).

  7. Selecteer Registreren.

  8. 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

  1. Ga in de app-registratie naar Een API beschikbaar maken.

  2. Selecteer Toevoegen naast de URI van de toepassings-id.

  3. Accepteer de standaardwaarde (api://<app-id>) of voer een aangepaste URI in.

  4. 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:

  1. Ga naar App-rollen.

  2. Selecteer App-rol aanmaken.

  3. Binnenkomen:

    • Weergavenaam: Reader
    • Toegestane lidtypen: gebruikers/groepen of beide
    • Waarde: reader (deze waarde wordt weergegeven in de claim van roles het token)
    • Beschrijving: Read-only access to data
  4. Selecteer de optie Toepassen.

  5. 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.

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

  1. Start Data API Builder:

    dab start
    
  2. Een token verkrijgen voor uw API. Gebruik de Microsoft Authentication Library (MSAL) of een hulpprogramma zoals jwt.ms voor testen.

  3. Roep de API aan met het token:

    curl -X GET "http://localhost:5000/api/Book" \
      -H "Authorization: Bearer <your-token>"
    
  4. Als u een aangepaste rol wilt gebruiken, neemt u de X-MS-API-ROLE header 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"]
        }
      ]
    }
  }
}