Een web-API-back-API Management in Azure API Management met OAuth 2.0-autorisatie met Azure Active Directory

In dit artikel leert u hoe u uw Azure API Management-exemplaar configureert om een API te beveiligen met behulp van het OAuth 2.0-protocol met Azure Active Directory (Azure AD).

U kunt autorisatie configureren voor ontwikkelaarsaccounts met behulp van andere OAuth 2.0-providers. Zie How to authorize developer accounts using OAuth 2.0 in Azure API Management (Ontwikkelaarsaccounts machtigen met behulp van OAuth 2.0 in Azure API Management) voor meer API Management.

Notitie

Deze functie is beschikbaar in de lagen Developer, Basic, Standard en Premium van API Management.

U kunt elke onderstaande stap in de verbruikslaag volgen, met uitzondering van het aanroepen van de API vanuit de ontwikkelaarsportal.

Vereisten

Voordat u de stappen in dit artikel kunt volgen, moet u het volgende hebben:

  • Een API Management-exemplaar
  • Een gepubliceerde API met behulp van het API Management-exemplaar
  • Een Azure AD-tenant

Overzicht

Overzichtsafbeelding om de volgende stroom visueel te visualiseren.

  1. Registreer een toepassing (back-end-app) in Azure AD om de API weer te geven.

  2. Registreer een andere toepassing (client-app) in Azure AD om een clienttoepassing te vertegenwoordigen die de API moet aanroepen.

  3. Verleen in Azure AD machtigingen om de client-app toe te staan de back-end-app aan te roepen.

  4. Configureer de ontwikkelaarsconsole in de ontwikkelaarsportal om de API aan te roepen met behulp van OAuth 2.0-gebruikersautorisatie.

  5. Voeg het validate-jwt-beleid toe om het OAuth-token voor elke binnenkomende aanvraag te valideren.

1. Een toepassing registreren in Azure AD om de API weer te geven

Gebruik de Azure Portal API te beveiligen met Azure AD door een toepassing te registreren die de API in Azure AD vertegenwoordigt.

Zie Snelstart: Een toepassing configureren om een web-API beschikbaar te maken voor meer informatie over app-registratie.

  1. Zoek en Azure Portalin de App-registraties .

  2. Selecteer Nieuwe registratie.

  3. Wanneer de pagina Een toepassing registreren verschijnt, voert u de registratiegegevens van de toepassing in:

    • Voer in de sectie Naam een betekenisvolle toepassingsnaam in die wordt weergegeven voor gebruikers van de app, zoals back-end-app.
    • Selecteer in de sectie Ondersteunde accounttypen een optie die past bij uw scenario.
  4. Laat de sectie Omleidings-URI leeg.

  5. Selecteer Registreren om de toepassing te maken.

  6. Zoek de waarde Toepassings-id (client) op de app-pagina Overzicht en noteer deze voor later.

  7. Selecteer onder de sectie Beheren van het zijmenu de optie Een API beschikbaar maken en stel de URI van de toepassings-id in met de standaardwaarde. Neem deze waarde op voor later.

  8. Selecteer de knop Een bereik toevoegen om de pagina Een bereik toevoegen weer te geven:

    1. Voer een nieuwe bereiknaam in, geef de weergavenaam van de beheerdersmachtiging op en geef de beschrijving van de beheerdersmachtiging op.
    2. Zorg ervoor dat de status Ingeschakeld bereik is geselecteerd.
  9. Selecteer de knop Bereik toevoegen om het bereik te maken.

  10. Herhaal stap 8 en 9 om alle scopes toe te voegen die door uw API worden ondersteund.

  11. Zodra de scopes zijn gemaakt, noteert u deze voor gebruik in een volgende stap.

2. Een andere toepassing registreren in Azure AD om een clienttoepassing weer te geven

Registreer elke clienttoepassing die de API aanroept als een toepassing in Azure AD. In dit voorbeeld is de clienttoepassing de ontwikkelaarsconsole in de API Management ontwikkelaarsportal.

Een andere toepassing registreren in Azure AD voor de ontwikkelaarsconsole:

  1. Zoek en Azure Portalin de App-registraties .

  2. Selecteer Nieuwe registratie.

  3. Wanneer de pagina Een toepassing registreren verschijnt, voert u de registratiegegevens van de toepassing in:

    • Voer in de sectie Naam een betekenisvolle toepassingsnaam in die wordt weergegeven voor gebruikers van de app, zoals client-app.
    • Selecteer in de sectie Ondersteunde accounttypen de optie Accounts in een organisatiemap (Elke Azure AD-directory - Multitenant).
  4. Selecteer in de sectie Omleidings-URI het veld URL en Web laat het nu leeg.

  5. Selecteer Registreren om de toepassing te maken.

  6. Zoek de waarde Toepassings-id (client) op de app-pagina Overzicht en noteer deze voor later.

  7. Maak een clientgeheim voor deze toepassing voor gebruik in een volgende stap.

    1. Selecteer in de sectie Beheren van het zijmenu certificaten & geheimen.
    2. Selecteer onder Clientgeheimen de optie Nieuw clientgeheim.
    3. Geef onder Een clientgeheim toevoegen een beschrijving op en kies wanneer de sleutel moet verlopen.
    4. Selecteer Toevoegen.

Wanneer het geheim is gemaakt, noteert u de sleutelwaarde voor gebruik in een volgende stap.

3. Machtigingen verlenen in Azure AD

Nu u twee toepassingen hebt geregistreerd voor de API en de Ontwikkelaarsconsole, verleent u machtigingen om de client-app toe te staan de back-end-app aan te roepen.

  1. Zoek en Azure Portalin de App-registraties .

  2. Kies uw client-app. Selecteer vervolgens API-machtigingen in de lijst met pagina's voor de app.

  3. Selecteer Een machtiging toevoegen.

  4. Selecteer onder Een API selecteren de optie Mijn API's en zoek en selecteer vervolgens uw back-end-app.

  5. Selecteer Gedelegeerde machtigingen en selecteer vervolgens de juiste machtigingen voor uw back-end-app.

  6. Selecteer Machtigingen toevoegen.

Optioneel:

  1. Navigeer naar de pagina API-machtigingen van uw client-app.

  2. Selecteer Beheerder toestemming <your-tenant-name> verlenen voor om toestemming te verlenen namens alle gebruikers in deze directory.

4. OAuth 2.0-gebruikersautorisatie inschakelen in de ontwikkelaarsconsole

Op dit moment hebt u uw toepassingen in Azure AD gemaakt en de juiste machtigingen verleend om de client-app toe te staan de back-end-app aan te roepen.

In dit voorbeeld gaat u OAuth 2.0-gebruikersautorisatie inschakelen in de ontwikkelaarsconsole (de client-app).

  1. Zoek in Azure Portal eindpunt-URL voor autorisatie en eindpunt-URL van token en sla deze op voor later gebruik.

    1. Open de App-registraties pagina.
    2. Selecteer Eindpunten.
    3. Kopieer het OAuth 2.0-autorisatie-eindpunt en het OAuth 2.0-token-eindpunt.
  2. Blader naar uw API Management exemplaar.

  3. Selecteer in de sectie Ontwikkelaarsportal in het zijmenu OAuth 2.0 + OpenID Verbinding maken.

  4. Selecteer op het tabblad OAuth 2.0 de optie Toevoegen.

  5. Geef een weergavenaam en beschrijving op.

  6. Voer voor de URL van de pagina Clientregistratie een tijdelijke aanduiding in, zoals http://localhost .

    • De URL van de clientregistratiepagina wijst naar een pagina waar gebruikers hun eigen accounts maken en configureren die worden ondersteund door OAuth 2.0-providers.
    • We gebruiken een tijdelijke aanduiding, omdat gebruikers in dit voorbeeld geen eigen accounts maken en configureren.
  7. Selecteer bij Autorisatietoeleningstypen de optie Autorisatiecode.

  8. Geef de URL van het autorisatie-eindpunt en de TOKEN-eindpunt-URL op die u eerder hebt opgeslagen:

    1. Kopieer en plak het OAuth 2.0-autorisatie-eindpunt in het tekstvak Autorisatie-eindpunt-URL.
    2. Selecteer POST onder Autorisatieaanvraagmethode.
    3. Voer het OAuth 2.0-token-eindpunt in en plak het in het tekstvak Token-eindpunt-URL.
      • Als u het v1-eindpunt gebruikt:
        • Voeg een parameter voor de body toe met de naam resource.
        • Voer de toepassings-id van de back-end-app in voor de waarde .
      • Als u het v2-eindpunt gebruikt:

    Belangrijk

    Hoewel u v1- of v2-eindpunten kunt gebruiken, raden we u aan v2-eindpunten te gebruiken.

  9. Geef de referenties voor de client-app op:

    • Gebruik voor Client-id de toepassings-id van de client-app.
    • Gebruik voor Clientgeheim de sleutel die u eerder voor de client-app hebt gemaakt.
  10. Noteer de omleidings-URI voor het toekenningstype van de autorisatiecode.

  11. Selecteer Maken.

  12. Ga terug naar de registratie van uw client-app.

  13. Selecteer Verificatie onder Beheren.

  14. Onder Platformconfiguraties:

    • Klik op Een platform toevoegen.
    • Selecteer het type web.
    • Plak de omleidings-URI die u eerder hebt opgeslagen onder Omleidings-URI's.
    • Klik op de knop Configureren om het op te slaan.

    Nu de ontwikkelaarsconsole toegangstokens van Azure AD kan verkrijgen via uw OAuth 2.0-autorisatieserver, kunt u OAuth 2.0-gebruikersautorisatie inschakelen voor uw API. Hierdoor weet de ontwikkelaarsconsole dat deze een toegangs token namens de gebruiker moet verkrijgen voordat de API wordt aangeroepen.

  15. Blader naar uw API Management en ga naar API's.

  16. Selecteer de API die u wilt beveiligen. Bijvoorbeeld Echo API.

  17. Ga naar Settings.

  18. Onder Beveiliging:

    1. Kies OAuth 2.0.
    2. Selecteer de OAuth 2.0-server die u eerder hebt geconfigureerd.
  19. Selecteer Opslaan.

5. De API aanroepen vanuit de ontwikkelaarsportal

Notitie

Deze sectie is niet van toepassing op de verbruikslaag, omdat deze geen ondersteuning biedt voor de ontwikkelaarsportal.

Zodra u uw OAuth 2.0-autorisatieserver hebt geconfigureerd en uw API hebt geconfigureerd voor het gebruik van die server, kunt u deze testen door naar de ontwikkelaarsportal te gaan en een API aan te roepen.

  1. Selecteer Ontwikkelaarsportal in het bovenste menu van de overzichtspagina API Management Azure-instantie.

  2. Blader naar een bewerking onder de API in de ontwikkelaarsportal.

  3. Selecteer Proberen om naar de ontwikkelaarsconsole te gaan.

  4. Let op een nieuw item in de sectie Autorisatie, dat overeenkomt met de autorisatieserver die u zojuist hebt toegevoegd.

  5. Selecteer Autorisatiecode in de vervolgkeuzelijst Autorisatie.

    Autorisatie van autorisatiecode selecteren

  6. Meld u aan bij de Azure AD-tenant zodra u hier om wordt gevraagd.

    • Als u al bent aangemeld bij het account, wordt u hier mogelijk niet om gevraagd.
  7. Nadat het aanmelden is geslaagd, wordt Authorization er een header toegevoegd aan de aanvraag, met een toegangsteken van Azure AD. Hier volgt een afgekort voorbeeld token (Base64 gecodeerd):

    Authorization: Bearer eyJ0eXAiOi[...]3pkCfvEOyA
    
  8. Selecteer Verzenden om de API aan te roepen.

6. Een JWT-validatiebeleid configureren om aanvragen vooraf te autoreren

Tot nu toe:

  • U hebt geprobeerd een aanroep uit te brengen vanuit de ontwikkelaarsconsole.
  • U bent gevraagd om u aan temelden bij de Azure AD-tenant.
  • De ontwikkelaarsconsole verkrijgt namens u een toegangs token en bevat het token in de aanvraag voor de API.

Maar wat gebeurt er als iemand uw API aanroept zonder token of met een ongeldig token? Als u bijvoorbeeld de API aanroept zonder de header, wordt de aanroep nog steeds door, omdat API Management het Authorization toegangsken niet valideert. De header wordt gewoon Authorization aan de back-end-API door geven.

Autoreer aanvragen vooraf in API Management JWT-beleid valideren door de toegangstokens van elke binnenkomende aanvraag te valideren. Als een aanvraag geen geldig token heeft, blokkeert API Management dit token.

Het volgende voorbeeldbeleid, wanneer dit wordt toegevoegd aan de beleidssectie, controleert de waarde van de doelgroepclaim in een toegangs token dat is verkregen van Azure AD en retourneert een foutbericht als het token ongeldig <inbound> is.

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

Notitie

De openid-config bovenstaande URL komt overeen met het v2-eindpunt. Gebruik voor het openid-config v1-eindpunt. https://login.microsoftonline.com/{aad-tenant}/.well-known/openid-configuration

Tip

Zoek de waarde {aad-tenant} als uw Azure AD-tenant-id in de Azure Portal, op:

  • De overzichtspagina van uw Azure AD-resource, of
  • De pagina > eigenschappen van uw Azure AD-resource beheren.

Zie Beleid instellen of bewerken voor meer informatie over het configureren van beleidsregels.

Een toepassing bouwen om de API aan te roepen

In deze handleiding hebt u de ontwikkelaarsconsole in API Management de voorbeeldclienttoepassing gebruikt om de aan te roepen die is beveiligd door Echo API OAuth 2.0. Zie Azure AD-codevoorbeeldenvoor meer informatie over het bouwen van een toepassing en het implementeren van OAuth 2.0.

Volgende stappen