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:
Inga kodändringar: Skydda ditt API med Azure Active Directory (Azure AD) via Azure Portal, så att du inte behöver uppdatera koden eller distribuera om ditt API.
Anteckning
Som standard ger den Azure AD autentisering som du väljer 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.
Uppdatera API:ets kod: Skydda ditt API genom att framtvinga certifikatautentisering, grundläggande autentisering eller Azure AD autentisering via kod.
Autentisera anrop till ditt API utan att ändra kod
Här är de allmänna stegen för den här metoden:
Skapa två Azure Active Directory-programidentiteter (Azure AD): en för logikappresursen och en för din webbapp (eller API-app).
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.
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.
Välj Azure Active Directory i Azure-portalen.
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>.
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.
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.
Listan Över ägda program innehåller nu din skapade programidentitet. Om den här identiteten inte visas väljer du Uppdatera i verktygsfältet.
I listan över appregistreringar väljer du din nya programidentitet.
I navigeringsmenyn för programidentitet väljer du Översikt.
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.
I navigeringsmenyn för programidentitet väljer du Certifikathemligheter&.
På fliken Klienthemligheter väljer du Ny klienthemlighet.
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.
I fönstret Certifikathemligheter&, under Klienthemligheter, visas din hemlighet nu tillsammans med ett hemligt värde och ett hemligt ID.
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
I Azure Portal letar du upp och väljer din webbapp eller API-app.
Under Inställningar väljer du Autentisering>Lägg till identitetsprovider.
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.
Skapa nu en programidentitet för webbappen eller API-appen på följande sätt:
Som Appregistreringstyp väljer du Skapa ny appregistrering.
För Namn anger du ett namn för programidentiteten.
För Kontotyper som stöds väljer du de kontotyper som är lämpliga för ditt scenario.
För Begränsa åtkomst väljer du Kräv autentisering.
För Oautentiserade begäranden väljer du alternativet baserat på ditt scenario.
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 :
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
Välj Autentisering på webbappens navigeringsmeny.
I avsnittet Identitetsprovider hittar du den programidentitet som du skapade tidigare. Välj namnet på din programidentitet.
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.
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 :
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.
Öppna logikappdefinitionen i kodvyn.
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 ActiveDirectoryOAuth vä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.