Verificatie toevoegen bij het aanroepen van aangepaste API's vanuit Azure Logic Apps

Als u de beveiliging van aanroepen naar uw API's wilt verbeteren, kunt u Microsoft Entra-verificatie instellen via Azure Portal, zodat u uw code niet hoeft bij te werken. Of u kunt verificatie vereisen en afdwingen via de code van uw API.

U kunt verificatie op de volgende manieren toevoegen:

  • Geen codewijzigingen: Beveilig uw API met Microsoft Entra-id via Azure Portal, dus u hoeft uw code niet bij te werken of uw API opnieuw te implementeren.

    Notitie

    Standaard biedt de Microsoft Entra-verificatie die u selecteert in Azure Portal geen verfijnde autorisatie. Met deze verificatie wordt uw API bijvoorbeeld vergrendeld voor alleen een specifieke tenant, niet voor een specifieke gebruiker of app.

  • Werk de code van uw API bij: beveilig uw API door verificatie van certificaten, basisverificatie of Microsoft Entra-verificatie af te dwingen via code.

Aanroepen naar uw API verifiëren zonder code te wijzigen

Dit zijn de algemene stappen voor deze methode:

  1. Maak twee Microsoft Entra-toepassingsidentiteiten: één voor uw logische app-resource en één voor uw web-app (of API-app).

  2. Als u aanroepen naar uw API wilt verifiëren, gebruikt u de referenties (client-id en geheim) voor de service-principal die is gekoppeld aan de Microsoft Entra-toepassingsidentiteit voor uw logische app.

  3. Neem de toepassings-id's op in de werkstroomdefinitie van uw logische app.

Deel 1: Een Microsoft Entra-toepassingsidentiteit maken voor uw logische app

Uw logische app-resource maakt gebruik van deze Microsoft Entra-toepassingsidentiteit om te verifiëren bij Microsoft Entra-id. U hoeft deze identiteit slechts één keer in te stellen voor uw directory. U kunt er bijvoorbeeld voor kiezen om dezelfde identiteit te gebruiken voor al uw logische apps, ook al kunt u voor elke logische app unieke identiteiten maken. U kunt deze identiteiten instellen in Azure Portal of PowerShell gebruiken.

  1. Selecteer Microsoft Entra-id in de Azure-portal.

  2. Controleer of u zich in dezelfde map bevindt als uw web-app of API-app.

    Tip

    Als u wilt schakelen tussen mappen, kiest u uw profiel en selecteert u een andere map. Of selecteer Overzicht >schakelen tussen mappen.

  3. Selecteer in het menu Map onder Beheren App-registraties> Nieuwe registratie.

    In de lijst Alle registraties worden alle app-registraties in uw directory weergegeven. Als u alleen uw app-registraties wilt weergeven, selecteert u Toepassingen in eigendom.

    Screenshot showing Azure portal with Microsoft Entra instance,

  4. Geef een gebruikersnaam op voor de toepassingsidentiteit van uw logische app. Selecteer de ondersteunde accounttypen. Voor omleidings-URI selecteert u Web, geeft u een unieke URL op waar het verificatieantwoord moet worden geretourneerd en selecteert u Registreren.

    Screenshot showing

    De lijst Toepassingen in eigendom bevat nu uw gemaakte toepassingsidentiteit. Als deze identiteit niet wordt weergegeven, selecteert u Vernieuwen op de werkbalk.

    Screenshot showing the application identity for your logic app.

  5. Selecteer uw nieuwe toepassings-id in de lijst met app-registraties.

  6. Selecteer Overzicht in het navigatiemenu van de toepassingsidentiteit.

  7. Kopieer en sla in het deelvenster Overzicht onder Essentials de toepassings-id op die moet worden gebruikt als de 'client-id' voor uw logische app in deel 3.

    Screenshot showing the application (client) ID underlined.

  8. Selecteer Certificaten en geheimen in het navigatiemenu van de toepassingsidentiteit.

  9. Selecteer Nieuw clientgeheim op het tabblad Clientgeheim.

  10. Geef voor Beschrijving een naam op voor uw geheim. Selecteer onder Verlopen een duur voor uw geheim. Wanneer u klaar bent, selecteert u Toevoegen.

    Het geheim dat u maakt, fungeert als het 'geheim' of wachtwoord van de toepassingsidentiteit voor uw logische app.

    Screenshot showing secret creation for application identity.

    In het deelvenster Certificaten en geheimen, onder Clientgeheimen, wordt uw geheim nu samen met een geheime waarde en geheime id weergegeven.

    Screenshot showing secret value and secret ID with copy button for secret value selected.

  11. Kopieer de geheime waarde voor later gebruik. Wanneer u uw logische app in deel 3 configureert, geeft u deze waarde op als het geheim of wachtwoord.

Deel 2: Een Microsoft Entra-toepassingsidentiteit maken voor uw web-app of API-app

Als uw web-app of API-app al is geïmplementeerd, kunt u verificatie inschakelen en de toepassingsidentiteit maken in Azure Portal. Anders kunt u verificatie inschakelen wanneer u implementeert met een Azure Resource Manager-sjabloon.

De toepassingsidentiteit maken voor een geïmplementeerde web-app of API-app in Azure Portal

  1. Zoek en selecteer uw web-app of API-app in Azure Portal.

  2. Selecteer onder Instellingen Verificatie-id-provider> toevoegen.

  3. Nadat het deelvenster Een id-provider toevoegen is geopend, selecteert u op het tabblad Basisbeginselen in de lijst Met id-providers Microsoft om Microsoft Entra-identiteiten te gebruiken en selecteert u Vervolgens Toevoegen.

  4. Maak nu als volgt een toepassings-id voor uw web-app of API-app:

    1. Selecteer voor app-registratietype de optie Nieuwe app-registratie maken.

    2. Geef bij Naam een naam op voor uw toepassingsidentiteit.

    3. Selecteer voor ondersteunde accounttypen de accounttypen die geschikt zijn voor uw scenario.

    4. Selecteer Verificatie vereisen als u de toegang wilt beperken.

    5. Voor niet-geverifieerde aanvragen selecteert u de optie op basis van uw scenario.

    6. Wanneer u klaar bent, selecteert u Toevoegen.

    De toepassings-id die u zojuist hebt gemaakt voor uw web-app of API-app, wordt nu weergegeven in de sectie Id-provider :

    Screenshot showing newly created application identity for web app or API app.

    Tip

    Als de toepassings-id niet wordt weergegeven, selecteert u Vernieuwen op de werkbalk.

Nu moet u de toepassings-id (client) en tenant-id vinden voor de toepassings-id die u zojuist hebt gemaakt voor uw web-app of API-app. U gebruikt deze id's in deel 3. Ga dus verder met de volgende stappen voor Azure Portal.

De client-id en tenant-id van de toepassingsidentiteit zoeken voor uw web-app of API-app in Azure Portal

  1. Selecteer Verificatie in het navigatiemenu van uw web-app.

  2. Zoek in de sectie Id-provider de toepassings-id die u eerder hebt gemaakt. Selecteer de naam voor uw toepassingsidentiteit.

    Screenshot showing newly created application identity with 'Overview' pane open.

  3. Nadat het deelvenster Overzicht van de toepassingsidentiteit is geopend, zoekt u de waarden voor de id van de toepassing (client) en de map-id (tenant). Kopieer en sla de waarden op voor gebruik in deel 3.

    Screenshot showing application identity's 'Overview' pane open with 'Application (client) ID' value and 'Directory (tenant) ID' value underlined.

    U kunt de tenant-id-GUID ook gebruiken in de implementatiesjabloon van uw web-app of API-app, indien nodig. Deze GUID is de GUID van uw specifieke tenant ('tenant-id') en moet worden weergegeven in deze URL: https://sts.windows.net/{GUID}

Verificatie instellen wanneer u implementeert met een Azure Resource Manager-sjabloon

Als u een Azure Resource Manager-sjabloon (ARM-sjabloon) gebruikt, moet u nog steeds een Microsoft Entra-toepassingsidentiteit maken voor uw web-app of API-app die verschilt van de app-identiteit voor uw logische app. Als u de toepassings-id wilt maken en vervolgens de client-id en tenant-id wilt vinden, volgt u de vorige stappen in deel 2 voor Azure Portal. U gebruikt zowel de client-id als de tenant-id in de implementatiesjabloon van uw app en ook voor deel 3.

Belangrijk

Wanneer u de Microsoft Entra-toepassingsidentiteit voor uw web-app of API-app maakt, moet u Azure Portal gebruiken, niet PowerShell. De PowerShell-commandlet stelt de vereiste machtigingen niet in om gebruikers aan te melden bij een website.

Nadat u de client-id en tenant-id hebt opgehaald, neemt u deze id's op als subresource van uw web-app of API-app in uw implementatiesjabloon:

"resources": [
   {
      "apiVersion": "2015-08-01",
      "name": "web",
      "type": "config",
      "dependsOn": ["[concat('Microsoft.Web/sites/','parameters('webAppName'))]"],
      "properties": {
         "siteAuthEnabled": true,
         "siteAuthSettings": {
            "clientId": "<client-ID>",
            "issuer": "https://sts.windows.net/<tenant-ID>/"
         }
      }
   }
]

Als u automatisch een lege web-app en een logische app samen met Microsoft Entra-verificatie wilt implementeren, bekijkt u de volledige sjabloon hier of selecteert u de volgende knop Implementeren in Azure :

Deploy to Azure

Deel 3: De sectie Autorisatie invullen in uw logische app

De vorige sjabloon heeft deze autorisatiesectie al ingesteld, maar als u de definitie van uw logische app rechtstreeks ontwerpt, moet u de volledige autorisatiesectie opnemen.

  1. Open de definitie van uw logische app in de codeweergave.

  2. Ga naar de HTTP-actiedefinitie , zoek de sectie Autorisatie en neem de volgende eigenschappen op:

{
   "tenant": "<tenant-ID>",
   "audience": "<client-ID-from-Part-2-web-app-or-API app>",
   "clientId": "<client-ID-from-Part-1-logic-app>",
   "secret": "<secret-from-Part-1-logic-app>",
   "type": "ActiveDirectoryOAuth"
}
Eigenschappen Vereist Omschrijving
tenant Ja De GUID voor de Microsoft Entra-tenant
audience Ja De GUID voor de doelresource die u wilt openen, de client-id van de toepassings-id voor uw web-app of API-app
clientId Ja De GUID voor de client die toegang aanvraagt, de client-id van de toepassingsidentiteit voor uw logische app
secret Ja Het geheim of wachtwoord van de toepassings-id voor de client die het toegangstoken aanvraagt
type Ja Het verificatietype. Voor ActiveDirectoryOAuth-verificatie is ActiveDirectoryOAuthde waarde .

Voorbeeld:

{
   "actions": {
      "HTTP": {
         "inputs": {
            "method": "POST",
            "uri": "https://your-api-azurewebsites.net/api/your-method",
            "authentication": {
               "tenant": "tenant-ID",
               "audience": "client-ID-from-azure-ad-app-for-web-app-or-api-app",
               "clientId": "client-ID-from-azure-ad-app-for-logic-app",
               "secret": "key-from-azure-ad-app-for-logic-app",
               "type": "ActiveDirectoryOAuth"
            }
         }
      }
   }
}

API-aanroepen beveiligen via code

Verificatie via certificaat

Als u de binnenkomende aanvragen van uw werkstroom voor logische apps wilt valideren naar uw web-app of API-app, kunt u clientcertificaten gebruiken. Als u uw code wilt instellen, leert u hoe u wederzijdse TLS-verificatie configureert.

Neem in de sectie Autorisatie de volgende eigenschappen op:

{
   "type": "ClientCertificate",
   "password": "<password>",
   "pfx": "<long-pfx-key>"
}
Eigenschappen Vereist Omschrijving
type Ja Het verificatietype. Voor TLS/SSL-clientcertificaten moet de waarde zijn ClientCertificate.
password Nee Het wachtwoord voor toegang tot het clientcertificaat (PFX-bestand)
pfx Ja De base64-gecodeerde inhoud van het PFX-bestand (clientcertificaat)

Basisverificatie

Als u binnenkomende aanvragen van uw logische app naar uw web-app of API-app wilt valideren, kunt u basisverificatie gebruiken, zoals een gebruikersnaam en wachtwoord. Basisverificatie is een gemeenschappelijk patroon en u kunt deze verificatie gebruiken in elke taal die wordt gebruikt om uw web-app of API-app te bouwen.

Neem in de sectie Autorisatie de volgende eigenschappen op:

{
   "type": "Basic",
   "username": "<username>",
   "password": "<password>"
}
Eigenschappen Vereist Omschrijving
type Ja Het verificatietype dat u wilt gebruiken. Voor basisverificatie moet de waarde zijn Basic.
username Ja De gebruikersnaam die u wilt gebruiken voor verificatie
password Ja Het wachtwoord dat u wilt gebruiken voor verificatie

Microsoft Entra-verificatie via code

Standaard biedt de Microsoft Entra-verificatie die u inschakelt in Azure Portal geen verfijnde autorisatie. Met deze verificatie wordt uw API bijvoorbeeld vergrendeld voor alleen een specifieke tenant, niet voor een specifieke gebruiker of app.

Als u de API-toegang tot uw logische app wilt beperken via code, extraheert u de header met het JSON-webtoken (JWT). Controleer de identiteit van de beller en negeer aanvragen die niet overeenkomen.

Volgende stappen