Lägga till autentisering när du anropar anpassade API:er från Azure Logic Apps

För att förbättra säkerheten för anrop till dina API:er kan du konfigurera Microsoft Entra-autentisering via Azure-portalen så att du inte behöver uppdatera koden. Eller så kan du kräva och ställa in autentisering via API-koden.

Du kan lägga till autentisering på följande sätt:

Autentisera anrop till ditt API utan att ändra kod

Här är de allmänna stegen för den här metoden:

  1. Skapa två Microsoft Entra-programidentiteter: en för din logikappresurs och en för din webbapp (eller API-app).

  2. Om du vill autentisera anrop till ditt API använder du autentiseringsuppgifterna (klient-ID och hemlighet) för tjänstens huvudnamn som är associerat med Microsoft Entra-programidentiteten för logikappen.

  3. Inkludera program-ID:n i logikappens arbetsflödesdefinition.

Del 1: Skapa en Microsoft Entra-programidentitet för din logikapp

Logikappresursen använder den här Microsoft Entra-programidentiteten för att autentisera mot Microsoft Entra-ID. Du behöver bara konfigurera den här identiteten en gång för din katalog. Du kan till exempel välja att använda samma identitet för alla dina logikappar, även om du kan skapa unika identiteter för varje logikapp. Du kan konfigurera dessa identiteter i Azure-portalen eller använda PowerShell.

  1. I Azure-portalen väljer du Microsoft Entra-ID.

  2. Bekräfta att du är i samma katalog som din webbapp eller API-app.

    Dricks

    Om du vill byta katalog väljer du din profil och väljer en annan katalog. Du kan också välja Katalogen Översiktsväxel>.

  3. På katalogmenyn under Hantera väljer du Appregistreringar> Ny registrering.

    Listan Alla registreringar visar alla appregistreringar i din katalog. Om du bara vill visa dina appregistreringar väljer du Ägda program.

    Screenshot showing Azure portal with Microsoft Entra instance,

  4. Ange ett användarbaserat namn för logikappens programidentitet. Välj de kontotyper som stöds. För Omdirigerings-URI väljer du Webb, anger en unik URL där du vill returnera autentiseringssvaret och väljer Registrera.

    Screenshot showing

    Listan Över ägda program innehåller nu din skapade programidentitet. Om den här identiteten inte visas väljer du Uppdatera i verktygsfältet.

    Screenshot showing the application identity for your logic app.

  5. I listan över appregistreringar väljer du din nya programidentitet.

  6. I navigeringsmenyn för programidentitet väljer du Översikt.

  7. I fönstret Översikt under Essentials kopierar och sparar du program-ID:t som ska användas som "klient-ID" för logikappen i del 3.

    Screenshot showing the application (client) ID underlined.

  8. I navigeringsmenyn för programidentitet väljer du Certifikat och hemligheter.

  9. På fliken Klienthemligheter väljer du Ny klienthemlighet.

  10. För Beskrivning anger du ett namn på din hemlighet. Under Upphör att gälla väljer du en varaktighet för din hemlighet. När du är klar väljer du Lägg till.

    Hemligheten som du skapar fungerar som programidentitetens "hemlighet" eller lösenord för logikappen.

    Screenshot showing secret creation for application identity.

    I fönstret Certifikat och hemligheter , under Klienthemligheter, visas nu din hemlighet tillsammans med ett hemligt värde och ett hemligt ID.

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

  11. Kopiera det hemliga värdet för senare användning. När du konfigurerar logikappen i del 3 anger du det här värdet som "hemlighet" eller lösenord.

Del 2: Skapa en Microsoft Entra-programidentitet för din webbapp eller API-app

Om din webbapp eller API-app redan har distribuerats kan du aktivera autentisering och skapa programidentiteten i Azure-portalen. Annars kan du aktivera autentisering när du distribuerar med en Azure Resource Manager-mall.

Skapa programidentiteten för en distribuerad webbapp eller API-app i Azure-portalen

  1. I Azure-portalen letar du upp och väljer din webbapp eller API-app.

  2. Under Inställningar väljer du Autentisering>Lägg till identitetsprovider.

  3. När fönstret Lägg till en identitetsprovider öppnas går du till fliken Grundläggande i listan Identitetsprovider och väljer Microsoft för att använda Microsoft Entra-identiteter och väljer sedan Lägg till.

  4. Skapa nu en programidentitet för webbappen eller API-appen på följande sätt:

    1. Som Appregistreringstyp väljer du Skapa ny appregistrering.

    2. Som Namn anger du ett namn för programidentiteten.

    3. För Kontotyper som stöds väljer du de kontotyper som är lämpliga för ditt scenario.

    4. För Begränsa åtkomst väljer du Kräv autentisering.

    5. För Oautentiserade begäranden väljer du alternativet baserat på ditt scenario.

    6. När du är klar väljer du Lägg till.

    Den programidentitet som du nyss skapade för webbappen eller API-appen visas nu i avsnittet Identitetsprovider :

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

    Dricks

    Om programidentiteten inte visas väljer du Uppdatera i verktygsfältet.

Nu måste du hitta program-ID:t (klient-) och klient-ID:t för den programidentitet som du nyss skapade för webbappen eller API-appen. Du använder dessa ID:er i del 3. Fortsätt därför med följande steg för Azure-portalen.

Hitta programidentitetens klient-ID och klient-ID för webbappen eller API-appen i Azure-portalen

  1. På webbappens navigeringsmeny väljer du Autentisering.

  2. I avsnittet Identitetsprovider hittar du den programidentitet som du skapade tidigare. Välj namnet på programidentiteten.

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

  3. När programidentitetens översiktsfönster öppnas letar du reda på värdena för program-ID (klient)-ID och katalog-ID (klientorganisation). Kopiera och spara värdena för användning i del 3.

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

    Du kan också använda klientorganisations-ID:ts GUID i webbappen eller API-appens distributionsmall om det behövs. Detta GUID är din specifika klientorganisations GUID ("klient-ID") och bör visas i den här URL:en: https://sts.windows.net/{GUID}

Konfigurera autentisering när du distribuerar med en Azure Resource Manager-mall

Om du använder en Azure Resource Manager-mall (ARM-mall) måste du fortfarande skapa en Microsoft Entra-programidentitet för webbappen eller API-appen som skiljer sig från appidentiteten för logikappen. Om du vill skapa programidentiteten och sedan hitta klient-ID och klient-ID följer du föregående steg i del 2 för Azure-portalen. Du använder både klient-ID och klient-ID i appens distributionsmall och även för del 3.

Viktigt!

När du skapar Microsoft Entra-programidentiteten för webbappen eller API-appen måste du använda Azure-portalen, inte PowerShell. PowerShell-kommandoleten konfigurerar inte de behörigheter som krävs för att logga in användare på en webbplats.

När du har fått klient-ID och klient-ID inkluderar du dessa ID:n som en underkälla för webbappen eller API-appen i distributionsmallen:

"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>/"
         }
      }
   }
]

Om du vill distribuera en tom webbapp och en logikapp automatiskt tillsammans med Microsoft Entra-autentisering kan du visa den fullständiga mallen här eller välja följande knappen Distribuera till Azure :

Deploy to Azure

Del 3: Fyll i auktoriseringsavsnittet i logikappen

Den föregående mallen har redan konfigurerat det här auktoriseringsavsnittet, men om du redigerar logikappdefinitionen direkt måste du inkludera det fullständiga auktoriseringsavsnittet.

  1. Öppna logikappdefinitionen i kodvyn.

  2. Gå till HTTP-åtgärdsdefinitionen, leta upp avsnittet Auktorisering och inkludera följande egenskaper:

{
   "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"
}
Property Obligatoriskt Beskrivning
tenant Ja GUID för Microsoft Entra-klientorganisationen
audience Ja GUID för målresursen som du vill komma åt, vilket är klient-ID:t från programidentiteten för webbappen eller API-appen
clientId Ja GUID för klienten som begär åtkomst, vilket är klient-ID:t från programidentiteten för logikappen
secret Ja Hemligheten eller lösenordet från programidentiteten för klienten som begär åtkomsttoken
type Ja Autentiseringstypen. För ActiveDirectoryOAuth-autentisering är ActiveDirectoryOAuthvärdet .

Till exempel:

{
   "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"
            }
         }
      }
   }
}

Säkra API-anrop via kod

Certifikatsautentisering

Om du vill verifiera inkommande begäranden från logikappens arbetsflöde till webbappen eller API-appen kan du använda klientcertifikat. Om du vill konfigurera koden får du lära dig hur du konfigurerar ömsesidig TLS-autentisering.

I avsnittet Auktorisering tar du med följande egenskaper:

{
   "type": "ClientCertificate",
   "password": "<password>",
   "pfx": "<long-pfx-key>"
}
Property Obligatoriskt Beskrivning
type Ja Autentiseringstypen. För TLS/SSL-klientcertifikat måste värdet vara ClientCertificate.
password Nej Lösenordet för åtkomst till klientcertifikatet (PFX-fil)
pfx Ja Det base64-kodade innehållet i klientcertifikatet (PFX-filen)

Grundläggande autentisering

Om du vill verifiera inkommande begäranden från logikappen till webbappen eller API-appen kan du använda grundläggande autentisering, till exempel användarnamn och lösenord. Grundläggande autentisering är ett vanligt mönster och du kan använda den här autentiseringen på alla språk som används för att skapa webbappen eller API-appen.

I avsnittet Auktorisering tar du med följande egenskaper:

{
   "type": "Basic",
   "username": "<username>",
   "password": "<password>"
}
Property Obligatoriskt Beskrivning
type Ja Den autentiseringstyp som du vill använda. För grundläggande autentisering måste värdet vara Basic.
username Ja Användarnamnet som du vill använda för autentisering
password Ja Lösenordet som du vill använda för autentisering

Microsoft Entra-autentisering via kod

Som standard ger den Microsoft Entra-autentisering som du aktiverar i Azure-portalen inte detaljerad auktorisering. Den här autentiseringen låser till exempel ditt API till bara en specifik klientorganisation, inte till en specifik användare eller app.

Om du vill begränsa API-åtkomsten till logikappen via kod extraherar du huvudet som har JSON-webbtoken (JWT). Kontrollera anroparens identitet och avvisa begäranden som inte matchar.

Nästa steg