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 Azure Active Directory-autentisering (Azure AD) via Azure Portal 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å Azure Active Directory-programidentiteter (Azure AD): en för logikappresursen 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 Azure AD programidentitet för logikappen.

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

Del 1: Skapa en Azure AD programidentitet för logikappen

Logikappresursen använder den här Azure AD programidentiteten för att autentisera mot Azure AD. 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 Portal eller använda PowerShell.

  1. Välj Azure Active Directory i Azure-portalen.

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

    Tips

    Om du vill byta katalog väljer du din profil och väljer en annan katalog. Du kan också välja Katalog för ö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.

    Skärmbild som visar Azure Portal med Azure Active Directory-instansen, fönstret

  4. Ange ett användaranvändarnamn 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.

    Skärmbild som visar fönstret Registrera ett program med programmets identitetsnamn och URL där du kan skicka autentiseringssvar.

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

    Skärmbild som visar programidentiteten för logikappen.

  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.

    Skärmbild som visar programmets (klientens) ID understruket.

  8. I navigeringsmenyn för programidentitet väljer du Certifikathemligheter&.

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

  10. I 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.

    Skärmbild som visar hur du skapar hemligheter för programidentitet.

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

    Skärmbild som visar hemligt värde och hemligt ID med kopieringsknappen för det valda hemliga värdet.

  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 Azure AD 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 Portal. 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 Portal

  1. I Azure Portal 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 Azure Active Directory-identiteter (Azure AD) 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. För 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.

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

    Skärmbild som visar den nyligen skapade programidentiteten för webbappen eller API-appen.

    Tips

    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 med följande steg för Azure Portal.

Hitta programidentitetens klient-ID och klient-ID för din webbapp eller API-app i Azure Portal

  1. Välj Autentisering på webbappens navigeringsmeny.

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

    Skärmbild som visar den nyligen skapade programidentiteten med fönstret Översikt öppen.

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

    Skärmbild som visar programidentitetens översiktsfönster öppet med värdet

    Du kan också använda klientorganisations-ID-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 Azure AD 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:t och klient-ID:t följer du föregående steg i del 2 för Azure Portal. Du använder både klient-ID och klient-ID i appens distributionsmall och även för del 3.

Viktigt

När du skapar Azure AD programidentitet för din webbapp eller API-app måste du använda Azure Portal, inte PowerShell. PowerShell-kommandot konfigurerar inte de behörigheter som krävs för att logga in användare på en webbplats.

När du har hämtat klient-ID:t och klientorganisations-ID:t 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 Azure Active Directory-autentisering visar du den fullständiga mallen här eller väljer följande knappen Distribuera till Azure :

Distribuera till Azure

Del 3: Fyll i auktoriseringsavsnittet i logikappen

Den föregående mallen har redan det här auktoriseringsavsnittet konfigurerat, 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 auktoriseringsavsnittet 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"
}
Egenskap Krävs Beskrivning
tenant Ja GUID för Azure AD klientorganisation
audience Yes 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 Yes GUID för klienten som begär åtkomst, vilket är klient-ID:t från programidentiteten för logikappen
secret Yes Hemligheten eller lösenordet från programidentiteten för klienten som begär åtkomsttoken
type Yes Autentiseringstypen. För ActiveDirectoryOAuth-autentisering är ActiveDirectoryOAuthvärdet .

Ett 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 din webbapp eller API-app kan du använda klientcertifikat. Om du vill konfigurera din kod lär du dig hur du konfigurerar ömsesidig TLS-autentisering.

I avsnittet Auktorisering inkluderar du följande egenskaper:

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

Grundläggande autentisering

Om du vill verifiera inkommande begäranden från logikappen till din webbapp eller API-app 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 din webbapp eller API-app.

I avsnittet Auktorisering inkluderar du följande egenskaper:

{
   "type": "Basic",
   "username": "<username>",
   "password": "<password>"
}
Egenskap Krävs Beskrivning
type Ja Den autentiseringstyp som du vill använda. För grundläggande autentisering måste värdet vara Basic.
username Yes Det användarnamn som du vill använda för autentisering
password Yes Det lösenord som du vill använda för autentisering

Azure Active Directory-autentisering via kod

Som standard ger den Azure AD autentisering som du aktiverar i Azure Portal 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