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 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 Microsoft Entra-ID via Azure Portal, så att du inte behöver uppdatera din kod eller distribuera om ditt API.
Kommentar
Som standard ger Den Microsoft Entra-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 Microsoft Entra-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å Microsoft Entra-programidentiteter: en för din logikappresurs 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 Microsoft Entra-programidentiteten för logikappen.
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 Portal eller använda PowerShell.
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>.
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ä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.
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 Certifikat och hemligheter.
På fliken Klienthemligheter väljer du Ny klienthemlighet.
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.
I fönstret Certifikat och hemligheter , under Klienthemligheter, visas nu din hemlighet 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 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 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 Microsoft Entra-identiteter 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.
Som 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.
Den programidentitet som du nyss skapade för webbappen eller API-appen visas nu i avsnittet Identitetsprovider :
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 Portal.
Hitta programidentitetens klient-ID och klient-ID för din webbapp eller API-app i Azure Portal
På webbappens navigeringsmeny väljer du Autentisering.
I avsnittet Identitetsprovider hittar du den programidentitet som du skapade tidigare. Välj namnet på programidentiteten.
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.
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 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 Microsoft Entra-programidentiteten för webbappen eller API-appen måste du använda Azure Portal, 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 :
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.
Öppna logikappdefinitionen i kodvyn.
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 ActiveDirectoryOAuth vä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.
Viktigt!
I produktionsmiljöer skyddar du alltid känslig information och hemligheter, till exempel autentiseringsuppgifter, certifikat, tumavtryck, åtkomstnycklar och anslutningssträng. Se till att du lagrar sådan information på ett säkert sätt med hjälp av Microsoft Entra-ID och Azure Key Vault. Undvik att hårdkoda den här informationen, dela med andra användare eller spara i oformaterad text var som helst som andra kan komma åt. Rotera dina hemligheter så snart som möjligt om du tror att den här informationen kan vara komprometterad. Mer information finns i Om Azure Key Vault.
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. Även om 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, använder du den bästa tillgängliga autentiseringsnivån i produktionsscenarier.
Viktigt!
För optimal säkerhet använder du Microsoft Entra-ID med hanterade identiteter för autentisering när det är möjligt. Den här metoden ger överlägsen säkerhet utan att behöva ange autentiseringsuppgifter. Azure hanterar den här identiteten och hjälper till att skydda autentiseringsinformationen så att du inte behöver hantera den här känsliga informationen själv. Information om hur du konfigurerar en hanterad identitet för Azure Logic Apps finns i Autentisera åtkomst och anslutningar till Azure-resurser med hanterade identiteter i Azure Logic Apps.
Om du måste använda en annan autentiseringstyp använder du det näst högsta säkerhetsalternativet som är tillgängligt. Anta till exempel att du måste skapa en anslutning med hjälp av en anslutningssträng i stället. En anslutningssträng innehåller den auktoriseringsinformation som krävs för att din app ska få åtkomst till en specifik resurs, tjänst eller system. Åtkomstnyckeln i anslutningssträng liknar ett rotlösenord.
I produktionsmiljöer skyddar du alltid känslig information och hemligheter, till exempel autentiseringsuppgifter, certifikat, tumavtryck, åtkomstnycklar och anslutningssträng. Se till att du lagrar sådan information på ett säkert sätt med hjälp av Microsoft Entra-ID och Azure Key Vault. Undvik att hårdkoda den här informationen, dela med andra användare eller spara i oformaterad text var som helst som andra kan komma åt. Rotera dina hemligheter så snart som möjligt om du tror att den här informationen kan vara komprometterad. Mer information finns i Om Azure Key Vault.
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 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.