Share via


Skydda ett API i Azure API Management med hjälp av OAuth 2.0-auktorisering med Microsoft Entra ID

GÄLLER FÖR: Alla API Management-nivåer

I den här artikeln lär du dig steg på hög nivå för att konfigurera din Azure API Management-instans för att skydda ett API med hjälp av OAuth 2.0-protokollet med Microsoft Entra-ID.

En konceptuell översikt över API-auktorisering finns i Autentisering och auktorisering till API:er i API Management.

Förutsättningar

Innan du följer stegen i den här artikeln måste du ha:

  • En API Management-instans
  • Ett publicerat API med API Management-instansen
  • En Microsoft Entra-klientorganisation

Översikt

Följ dessa steg för att skydda ett API i API Management med OAuth 2.0-auktorisering med Microsoft Entra-ID.

  1. Registrera ett program (kallas backend-app i den här artikeln) i Microsoft Entra-ID för att skydda åtkomsten till API:et.

    För att få åtkomst till API:et kommer användare eller program att hämta och presentera en giltig OAuth-token som beviljar åtkomst till den här appen med varje API-begäran.

  2. Konfigurera principen validate-jwt i API Management för att verifiera OAuth-token som visas i varje inkommande API-begäran. Giltiga begäranden kan skickas till API:et.

Information om OAuth-auktoriseringsflöden och hur du genererar nödvändiga OAuth-token ligger utanför omfånget för den här artikeln. Vanligtvis används en separat klientapp för att hämta token från Microsoft Entra-ID som auktoriserar åtkomst till API:et. Länkar till mer information finns i Nästa steg.

Registrera ett program i Microsoft Entra-ID för att representera API:et

Använd Azure-portalen och skydda ett API med Microsoft Entra-ID genom att först registrera ett program som representerar API:et.

Mer information om appregistrering finns i Snabbstart: Konfigurera ett program för att exponera ett webb-API.

  1. I Azure-portalen söker du efter och väljer Appregistreringar.

  2. Välj Ny registrering.

  3. När sidan registrera ett program visas anger du programmets registreringsinformation:

    • I avsnittet Namn anger du ett beskrivande programnamn som ska visas för appens användare, till exempel backend-app.
    • I avsnittet Kontotyper som stöds väljer du ett alternativ som passar ditt scenario.
  4. Lämna avsnittet Omdirigerings-URI tomt.

  5. Välj Registrera för att skapa programmet.

  6. På sidan Appöversikt letar du reda på värdet program-ID (klient) och registrerar det för senare.

  7. Under avsnittet Hantera på sidomenyn väljer du Exponera ett API och anger program-ID-URI :n med standardvärdet. Om du utvecklar en separat klientapp för att hämta OAuth 2.0-token för åtkomst till serverdelsappen registrerar du det här värdet för senare.

  8. Välj knappen Lägg till ett omfång för att visa sidan Lägg till ett omfång:

    1. Ange ett nytt omfångsnamn, visningsnamn för administratörsmedgivande och Beskrivning av administratörsmedgivande.
    2. Kontrollera att det aktiverade omfångstillståndet är markerat.
  9. Välj knappen Lägg till omfång för att skapa omfånget.

  10. Upprepa de föregående två stegen för att lägga till alla omfång som stöds av ditt API.

  11. När omfången har skapats antecknar du dem för användning senare.

Konfigurera en JWT-valideringsprincip för att förauktorisera begäranden

Följande exempelprincip, när den läggs till i <inbound> principavsnittet, kontrollerar värdet för målgruppsanspråket i en åtkomsttoken som hämtats från Microsoft Entra-ID som visas i auktoriseringshuvudet. Det returnerar ett felmeddelande om token inte är giltig. Konfigurera den här principen i ett principomfång som är lämpligt för ditt scenario.

  • openid-config I URL:en aad-tenant är klientorganisations-ID i Microsoft Entra-ID. Hitta det här värdet i Azure-portalen, till exempel på sidan Översikt för din Microsoft Entra-resurs. Exemplet som visas förutsätter en Microsoft Entra-app med en enda klientorganisation och en v2-konfigurationsslutpunkt.
  • Värdet för claim är klient-ID för den serverdelsapp som du registrerade i Microsoft Entra-ID.
<validate-jwt header-name="Authorization" failed-validation-httpcode="401" failed-validation-error-message="Unauthorized. Access token is missing or invalid.">
    <openid-config url="https://login.microsoftonline.com/{aad-tenant}/v2.0/.well-known/openid-configuration" />
    <audiences>
        <audience>{audience-value - (ex:api://guid)}</audience>
    </audiences>
    <issuers>
        <issuer>{issuer-value - (ex: https://sts.windows.net/{tenant id}/)}</issuer>
    </issuers>
    <required-claims>
        <claim name="aud">
            <value>{backend-app-client-id}</value>
        </claim>
    </required-claims>
</validate-jwt>

Kommentar

Den föregående openid-config URL:en motsvarar v2-slutpunkten. För v1-slutpunkten openid-config använder du https://login.microsoftonline.com/{aad-tenant}/.well-known/openid-configuration.

Information om hur du konfigurerar principer finns i Ange eller redigera principer. Mer anpassning av JWT-valideringar finns i referensen validate-jwt . Api Management tillhandahåller validate-azure-ad-token även principen för att verifiera en JWT som tillhandahölls av Microsoft Entra-tjänsten.

Arbetsflöde för auktorisering

  1. En användare eller ett program hämtar en token från Microsoft Entra-ID med behörigheter som ger åtkomst till serverdelsappen.

  2. Token läggs till i auktoriseringshuvudet för API-begäranden till API Management.

  3. API Management verifierar token med hjälp validate-jwt av principen.

    • Om en begäran inte har en giltig token blockerar API Management den.

    • Om en begäran åtföljs av en giltig token kan gatewayen vidarebefordra begäran till API:et.

Nästa steg