Skydda en webb-API-backend i Azure API Management OAuth 2.0-auktorisering med Azure Active Directory

I den här artikeln får du lära dig hur du konfigurerar din Azure API Management-instans för att skydda ett API med hjälp av OAuth 2.0-protokollet med Azure Active Directory (Azure AD).

Du kan konfigurera auktorisering för utvecklarkonton med hjälp av andra OAuth 2.0-providers. Mer information finns i Auktorisera utvecklarkonton med hjälp av OAuth 2.0 i Azure API Management.

Anteckning

Den här funktionen är tillgänglig på nivåerna Developer, Basic, Standard Premium på API Management.

Du kan följa varje steg nedan på förbrukningsnivån, förutom att anropa API:et från utvecklarportalen.

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 hjälp av API Management instansen
  • En Azure AD-klientorganisation

Översikt

Översiktsgrafik för att visualisera följande flöde visuellt.

  1. Registrera ett program (backend-app) i Azure AD för att representera API:et.

  2. Registrera ett annat program (klientapp) i Azure AD för att representera ett klientprogram som behöver anropa API:et.

  3. I Azure AD beviljar du behörigheter så att klientappen kan anropa backend-app.

  4. Konfigurera utvecklarkonsolen i utvecklarportalen för att anropa API:et med OAuth 2.0-användarauktorisering.

  5. Lägg till principen validate-jwt för att verifiera OAuth-token för varje inkommande begäran.

1. Registrera ett program i Azure AD för att representera API:et

Med hjälp Azure Portal du ett API med Azure AD genom att registrera ett program som representerar API:et i Azure AD.

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

  1. I listan Azure Portaldu 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 användare av appen, 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å appens översiktssida söker du efter värdet för program-ID (klient) och registrerar det för senare användning.

  7. Under avsnittet Hantera på sidomenyn väljer du Exponera ett API och anger program-ID-URI med standardvärdet. Registrera 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 omfångstillståndet Aktiverad är markerat.
  9. Välj knappen Lägg till omfång för att skapa omfånget.

  10. Upprepa steg 8 och 9 för att lägga till alla omfång som stöds av ditt API.

  11. När omfången har skapats noterar du dem för användning i ett efterföljande steg.

2. Registrera ett annat program i Azure AD för att representera ett klientprogram

Registrera varje klientprogram som anropar API:et som ett program i Azure AD. I det här exemplet är klientprogrammet utvecklarkonsolen i API Management utvecklarportalen.

Så här registrerar du ett annat program i Azure AD för att representera utvecklarkonsolen:

  1. I listan Azure Portaldu 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 användare av appen, till exempel klientapp.
    • I avsnittet Kontotyper som stöds väljer du Konton i valfri organisationskatalog (Alla Azure AD-kataloger – Multitenant).
  4. I avsnittet Omdirigerings-URI väljer Web du och lämnar URL-fältet tomt för tillfället.

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

  6. På appens översiktssida söker du efter värdet för program-ID (klient) och registrerar det för senare användning.

  7. Skapa en klienthemlighet för det här programmet som ska användas i ett efterföljande steg.

    1. Under avsnittet Hantera på sidomenyn väljer du Certifikat & hemligheter.
    2. Välj Ny klienthemlighet under Klienthemligheter.
    3. Under Lägg till en klienthemlighet anger du en Beskrivning och väljer när nyckeln ska upphöra att gälla.
    4. Välj Lägg till.

När hemligheten har skapats noterar du nyckelvärdet för användning i ett efterföljande steg.

3. Bevilja behörigheter i Azure AD

Nu när du har registrerat två program som representerar API:et och utvecklarkonsolen beviljar du behörigheter så att klientappen kan anropa backend-app.

  1. I listan Azure Portaldu efter och väljer Appregistreringar.

  2. Välj din klientapp. Välj sedan API-behörigheter i listan över sidor för appen.

  3. Välj Lägg till en behörighet.

  4. Under Välj ett API väljer du Mina API:er och hittar och väljer sedan din backend-app.

  5. Välj Delegerade behörigheter och välj sedan lämpliga behörigheter för din backend-app.

  6. Välj Lägg till behörigheter.

Valfritt:

  1. Gå till sidan API-behörigheter för klientappen.

  2. Välj Bevilja administratörsmedgivande <your-tenant-name> för att bevilja medgivande åt alla användare i den här katalogen.

4. Aktivera OAuth 2.0-användarauktorisering i utvecklarkonsolen

Nu har du skapat dina program i Azure AD och har beviljat rätt behörigheter så att klientappen kan anropa backend-appen.

I det här exemplet aktiverar du OAuth 2.0-användarauktorisering i utvecklarkonsolen (klientappen).

  1. I Azure Portal du URL:en för auktoriseringsslutpunkten och tokenslutpunktens URL och sparar dem till senare.

    1. Öppna Appregistreringar sidan.
    2. Välj Slutpunkter.
    3. Kopiera OAuth 2.0-auktoriseringsslutpunkten och OAuth 2.0-tokenslutpunkten.
  2. Bläddra till din API Management instans.

  3. Under avsnittet Utvecklarportal på sidomenyn väljer du OAuth 2.0 + OpenID Anslut.

  4. Under fliken OAuth 2.0 väljer du Lägg till.

  5. Ange ett visningsnamn och en beskrivning.

  6. För klientregistreringssidans URL anger du ett platshållarvärde, till exempel http://localhost .

    • Url:en för klientregistreringssidan pekar på en sida där användarna skapar och konfigurerar sina egna konton som stöds av OAuth 2.0-providers.
    • Vi använder en platshållare eftersom användarna i det här exemplet inte skapar och konfigurerar sina egna konton.
  7. För Beviljandetyper för auktorisering väljer du Auktoriseringskod.

  8. Ange URL:en för auktoriseringsslutpunkten och tokenslutpunkten som du sparade tidigare:

    1. Kopiera och klistra in OAuth 2.0 Authorization Endpoint (Auktoriseringsslutpunkt för OAuth 2.0) i textrutan Authorization endpoint URL (URL för auktoriseringsslutpunkt).
    2. Välj POST under Metod för auktoriseringsbegäran.
    3. Ange OAuth 2.0-tokenslutpunkten och klistra in den i textrutan Token endpoint URL (Url för tokenslutpunkt).
      • Om du använder v1-slutpunkten:
        • Lägg till en brödtextparameter med namnet resource.
        • Ange program-ID för backend-appen för värdet.
      • Om du använder v2-slutpunkten:

    Viktigt

    Du kan använda antingen v1- eller v2-slutpunkter, men vi rekommenderar att du använder v2-slutpunkter.

  9. Ange autentiseringsuppgifter för klientappen:

    • För Klient-ID använder du program-ID för klientappen.
    • För Klienthemlighet använder du den nyckel som du skapade för klientappen tidigare.
  10. Anteckna omdirigerings-URI för typ av beviljande av auktoriseringskod.

  11. Välj Skapa.

  12. Gå tillbaka till registreringen av klientappen.

  13. Under Hantera väljer du Autentisering.

  14. Under Plattformskonfigurationer:

    • Klicka på Lägg till en plattform.
    • Välj typen Webb.
    • Klistra in den omdirigerings-URI som du sparade tidigare under Omdirigerings-URI:er.
    • Klicka på knappen Konfigurera för att spara.

    Nu när utvecklarkonsolen kan hämta åtkomsttoken från Azure AD via OAuth 2.0-auktoriseringsservern aktiverar du OAuth 2.0-användarauktorisering för ditt API. På så sätt kan utvecklarkonsolen veta att den måste hämta en åtkomsttoken för användarens räkning innan anrop till ditt API.

  15. Bläddra till din API Management instans och gå till API:er.

  16. Välj det API som du vill skydda. Till exempel Echo API.

  17. Gå till Inställningar.

  18. Under Säkerhet:

    1. Välj OAuth 2.0.
    2. Välj den OAuth 2.0-server som du konfigurerade tidigare.
  19. Välj Spara.

5. Anropa API:et från utvecklarportalen

Anteckning

Det här avsnittet gäller inte för förbrukningsnivån eftersom det inte stöder utvecklarportalen.

När du har konfigurerat OAuth 2.0-auktoriseringsservern och konfigurerat ditt API för att använda den servern kan du testa den genom att gå till utvecklarportalen och anropa ett API.

  1. Välj Utvecklarportalen på den översta menyn från azure-API Management instansens översiktssida.

  2. Bläddra till valfri åtgärd under API:et i utvecklarportalen.

  3. Välj Prova för att komma till utvecklarkonsolen.

  4. Observera ett nytt objekt i avsnittet Auktorisering som motsvarar den auktoriseringsserver som du just lade till.

  5. Välj Auktoriseringskod i listrutan auktorisering.

    Välj auktoriseringskod för auktorisering

  6. När du uppmanas till det loggar du in på Azure AD-klienten.

    • Om du redan är inloggad på kontot kanske du inte uppmanas att göra det.
  7. Efter lyckad inloggning läggs ett Authorization -huvud till i begäran med en åtkomsttoken från Azure AD. Följande är en förkortad exempeltoken (Base64-kodad):

    Authorization: Bearer eyJ0eXAiOi[...]3pkCfvEOyA
    
  8. Välj Skicka för att anropa API:et.

6. Konfigurera en JWT-valideringsprincip för att auktorisera begäranden i förväg

Hittills:

  • Du har försökt göra ett anrop från utvecklarkonsolen.
  • Du har blivit tillfrågad och har loggat in på Azure AD-klientorganisationen.
  • Utvecklarkonsolen hämtar en åtkomsttoken åt dig och inkluderar token i begäran som görs till API:et.

Men vad händer om någon anropar ditt API utan en token eller med en ogiltig token? Om du till exempel anropar API:et utan -huvudet går anropet fortfarande igenom Authorization eftersom API Management inte validerar åtkomsttoken. Den skickar bara Authorization -huvudet till backend-API:et.

Auktorisera begäranden i API Management med principen Validate JWT genom att verifiera åtkomsttoken för varje inkommande begäran. Om en begäran inte har en giltig token API Management den.

När följande exempelprincip läggs till i principavsnittet kontrollerar värdet för målgruppsanspråk i en åtkomsttoken som hämtas från Azure AD och returnerar ett felmeddelande om <inbound> token inte är giltig.

<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" />
    <required-claims>
        <claim name="aud">
            <value>{backend-api-application-client-id}</value>
        </claim>
    </required-claims>
</validate-jwt>

Anteckning

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

Tips

Hitta värdet {aad-tenant} som ditt Azure AD-klientorganisations-ID i Azure Portal, antingen på:

  • Översiktssidan för din Azure AD-resurs, eller
  • Sidan Hantera > egenskaper för din Azure AD-resurs.

Information om hur du konfigurerar principer finns i Ange eller redigera principer.

Skapa ett program för att anropa API:et

I den här guiden använde du utvecklarkonsolen i API Management som exempelklientprogram för att anropa som skyddas av Echo API OAuth 2.0. Mer information om hur du skapar ett program och implementerar OAuth 2.0 finns i Azure AD-kodexempel.

Nästa steg