Konfigurera autentiseringshanteraren – användardelegering av åtkomst till serverdels-API

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

Den här artikeln vägleder dig genom de övergripande stegen för att konfigurera och använda en hanterad anslutning som ger Microsoft Entra-användare eller grupper delegerade behörigheter till ett serverdels-OAuth 2.0-API. Följ dessa steg för scenarier när en klientapp (eller robot) behöver komma åt serverdelssäkrade onlineresurser för en autentiserad användares räkning (till exempel genom att kontrollera e-postmeddelanden eller göra en beställning).

Scenarioöversikt

Kommentar

Det här scenariot gäller endast för autentiseringsprovidrar som konfigurerats med auktoriseringskodens beviljandetyp.

I det här scenariot konfigurerar du en hanterad anslutning som gör det möjligt för en klientapp (eller robot) att komma åt ett serverdels-API för en Microsoft Entra-användare eller grupp. Du kan till exempel ha en statisk webbapp som har åtkomst till ett GitHub-API för serverdelen och som du vill komma åt data som är specifika för den inloggade användaren. Följande diagram illustrerar scenariot.

Diagram som visar processflöde för användardelegeringsbehörigheter.

  • Användaren måste auktorisera appen för att få åtkomst till skyddade resurser för deras räkning och för att auktorisera appen måste användaren autentisera sin identitet
  • För att utföra åtgärder för en användares räkning anropar appen den externa serverdelstjänsten, till exempel Microsoft Graph eller GitHub
  • Varje extern tjänst har ett sätt att skydda dessa anrop – till exempel med en användartoken som unikt identifierar användaren
  • För att skydda anropet till den externa tjänsten måste appen be användaren att logga in, så att den kan hämta användarens token
  • Som en del av konfigurationen registreras en autentiseringsprovider med hjälp av autentiseringshanteraren i API Management-instansen. Den innehåller information om identitetsprovidern som ska användas, tillsammans med ett giltigt OAuth-klient-ID och hemlighet, OAuth-omfång som ska aktiveras och andra anslutningsmetadata som krävs av identitetsprovidern.
  • Dessutom skapas och används en anslutning för att hjälpa användaren att logga in och hämta användartoken så att den kan hanteras

Förutsättningar

  • Åtkomst till en Microsoft Entra-klientorganisation där du har behörighet att skapa en appregistrering och bevilja administratörsmedgivande för appens behörigheter. Läs mer

    Om du vill skapa en egen klientorganisation för utvecklare kan du registrera dig för Microsoft 365 Developer Program.

  • En eller flera användare eller grupper i klientorganisationen att delegera behörigheter till.

  • En API Management-instans som körs. Om du behöver det skapar du en Azure API Management-instans.

  • Ett serverdels-OAuth 2.0-API som du vill komma åt för användaren eller gruppen.

Steg 1: Etablera tjänstens huvudnamn för Azure API Management Data Plane

Du måste etablera tjänstens huvudnamn för Azure API Management Data Plane för att ge användare eller grupper nödvändiga delegerade behörigheter. Använd följande steg för att etablera tjänstens huvudnamn med hjälp av Azure PowerShell.

  1. Logga in till Azure PowerShell.

  2. Om AzureAD-modulen inte redan är installerad installerar du den med följande kommando:

    Install-Module -Name AzureAD -Scope CurrentUser -Repository PSGallery -Force
    
  3. Anslut till klientorganisationen med följande kommando:

    Connect-AzureAD -TenantId "<YOUR_TENANT_ID>"
    
  4. Om du uppmanas att göra det loggar du in med autentiseringsuppgifterna för administratörskontot för din klientorganisation.

  5. Etablera tjänstens huvudnamn för Azure API Management Data Plane med följande kommando:

    New-AzureADServicePrincipal -AppId c8623e40-e6ab-4d2b-b123-2ca193542c65 -DisplayName "Azure API Management Data Plane"
    

Steg 2: Skapa en Microsoft Entra-appregistrering

Skapa ett Microsoft Entra-ID-program för användardelegering och ge det rätt behörighet att läsa anslutningen i API Management.

  1. Logga in på Azure-portalen med ett konto med tillräcklig behörighet i klientorganisationen.
  2. Under Azure Services söker du efter Microsoft Entra-ID.
  3. Välj Appregistreringar på den vänstra menyn och välj sedan + Ny registrering.
  4. På sidan Registrera ett program anger du dina inställningar för programregistrering:
    1. I Namn anger du ett beskrivande namn som ska visas för appens användare, till exempel UserPermissions.
    2. I Kontotyper som stöds väljer du ett alternativ som passar ditt scenario, till exempel Endast konton i den här organisationskatalogen (enskild klientorganisation).
    3. Ange omdirigerings-URI:n till webben och ange https://www.postman-echo.com/get.
  5. På den vänstra menyn väljer du API-behörigheter och sedan + Lägg till en behörighet.
    1. Välj fliken API:er som min organisation använder , skriv Azure API Management Data Plane och välj det.
    2. Under Behörigheter väljer du Authorizations.Read och sedan Lägg till behörigheter.
  6. Välj Översikt på den vänstra menyn. På sidan Översikt letar du reda på värdet program-ID (klient) och registrerar det för användning i ett senare steg.
  7. Välj Certifikat och hemligheter på den vänstra menyn och välj sedan + Ny klienthemlighet.
    1. Ange en beskrivning.
    2. Välj ett alternativ för Upphör att gälla.
    3. Markera Lägga till.
    4. Kopiera klienthemlighetens Värde innan du lämnar sidan. Du behöver den senare.

Steg 3: Konfigurera en provider för autentiseringsuppgifter i API Management

  1. Logga in på portalen och gå till din API Management-instans.
  2. Välj Autentiseringshanteraren på den vänstra menyn och välj sedan + Skapa.
    Skärmbild av hur du skapar en API-autentiseringsuppgift i portalen.
  3. På sidan Skapa provider för autentiseringsuppgifter anger du inställningarna för autentiseringsprovidern för ditt API. I det här scenariot måste du i Bevilja typ välja Auktoriseringskod. Mer information finns i Konfigurera autentiseringsprovidrar i autentiseringshanteraren.
  4. Välj Skapa.
  5. När du uppmanas till det granskar du omdirigerings-URL:en för OAuth som visas och väljer Ja för att bekräfta att den matchar den URL som du angav i appregistreringen.

Steg 4: Konfigurera en anslutning

När du har skapat en provider för autentiseringsuppgifter kan du lägga till en anslutning till providern. Slutför stegen för anslutningen på fliken Anslut ion:

  1. Ange ett Anslut ionsnamn och välj sedan Spara.
  2. Under Steg 2: Logga in på din anslutning väljer du länken för att logga in på autentiseringsprovidern. Slutför stegen där för att auktorisera åtkomst och återgå till API Management.
  3. Under Steg 3: Bestäm vem som ska ha åtkomst till den här anslutningen (åtkomstprincip) väljer du + Lägg till. Beroende på ditt delegeringsscenario väljer du Användare eller Grupp.
  4. I fönstret Välj objekt gör du val i följande ordning:
    1. Sök först efter en eller flera användare (eller grupper) för att lägga till och markera markeringsrutan.
    2. I listan som visas söker du sedan efter appregistreringen som du skapade i ett tidigare avsnitt.
    3. Klicka sedan på Välj.
  5. Välj Slutför.

Den nya anslutningen visas i listan över anslutningar och visar statusen Anslut ed. Om du vill skapa en annan anslutning för providern för autentiseringsuppgifter slutför du föregående steg.

Dricks

Använd portalen för att lägga till, uppdatera eller ta bort anslutningar till en autentiseringsprovider när som helst. Mer information finns i Konfigurera flera anslutningar.

Steg 5: Skaffa en Åtkomsttoken för Microsoft Entra-ID

Om du vill aktivera användardelegering till serverdels-API:et måste en åtkomsttoken för den delegerade användaren eller gruppen anges vid körning i get-authorization-context principen. Detta görs vanligtvis programmatiskt i klientappen med hjälp av Microsoft Authentication Library (MSAL). Det här avsnittet innehåller manuella steg för att skapa en åtkomsttoken för testning.

  1. Klistra in följande URL i webbläsaren och ersätt värdena för <tenant-id> och <client-id> med värden från din Microsoft Entra-appregistrering:

    https://login.microsoftonline.com/<tenant-id>/oauth2/authorize?client_id=<client-id>&response_type=code&redirect_uri=https://www.postman-echo.com/get&response_mode=query&resource=https://azure-api.net/authorization-manager&state=1234`
    
  2. Logga in när du uppmanas att göra det. I svarstexten kopierar du värdet för den kod som anges (exempel: "0.AXYAh2yl…").

  3. Skicka följande POST begäran till tokenslutpunkten, ersätt <tenant-id> med ditt klient-ID och inklusive det angivna huvudet och brödtextparametrarna från appregistreringen och koden som du kopierade i föregående steg.

    POST https://login.microsoftonline.com/<tenant-id>/oauth2/token HTTP/1.1
    

    Sidhuvud

    Content-Type: application/x-www-form-urlencoded

    Brödtext

    grant_type: "authorization_code"
    client_id: <client-id>
    client_secret: <client-secret>
    redirect_uri: <redirect-url> 
    code: <code>   ## The code you copied in the previous step
    
  4. I svarstexten kopierar du värdet för access_token som anges (exempel: eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6IjZqQmZ1...). Du skickar det här värdet i principkonfigurationen i nästa steg.

Steg 6: Konfigurera principen get-authorization-context för serverdels-API

Konfigurera principen get-authorization-context för serverdels-API:et som du vill komma åt för användaren eller gruppen. I testsyfte kan du konfigurera principen med hjälp av Microsoft Entra ID-åtkomsttoken för den användare som du fick i föregående avsnitt.

  1. Logga in på portalen och gå till din API Management-instans.

  2. På den vänstra menyn väljer du API:er och sedan ditt OAuth 2.0-serverdels-API.

  3. Välj Alla åtgärder. I avsnittet Inkommande bearbetning väljer du ikonen (</>) (kodredigeraren).

  4. get-authorization-context Konfigurera principen i avsnittet inbound och ange identity-type till jwt:

    <policies>
        <inbound>
            [...]
            <get-authorization-context provider-id="<credential-provider-id>" authorization-id="<connection-id>" context-variable-name="auth-context" identity-type="jwt" identity="<access-token>" ignore-error="false" />
            [...]
        </inbound> 
    </policies>
    

I den föregående principdefinitionen ersätter du:

  • <credential-provider-id> och <connection-id> med namnen på autentiseringsprovidern respektive anslutningen som du konfigurerade i ett föregående steg.

  • <access-token> med åtkomsttoken för Microsoft Entra-ID som du genererade i föregående steg.

Steg 7: Testa API:et

  1. På fliken Test väljer du en åtgärd som du har konfigurerat.

  2. Välj Skicka.

    Ett lyckat svar returnerar användardata från serverdels-API:et.