Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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 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 (appregistrering): 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 hyresgäst. 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.
I sökrutan i Azure-portalen letar du upp och väljer Microsoft Entra-ID.
Bekräfta att du är i samma tenant/klientorganisation som din webbapp eller API-app.
Tips
Om du vill byta klientorganisation öppnar du din profil från Namnlisten i Azure och väljer Växla katalog.
På resursmenyn för klientorganisationen går du till Hantera och väljer Appregistreringar.
Sidan Appregistreringar visar alla appregistreringar i din klientorganisation. Om du bara vill visa dina appregistreringar väljer du Ägda program.
I verktygsfältet väljer du Ny registrering.
Följ dessa steg på sidan Registrera ett program :
Som Namn anger du ett användarvänligt, användarvänligt namn för logikappens programidentitet.
Under Kontotyper som stöds väljer du det alternativ som bäst beskriver de kontotyper som kan använda programidentiteten eller få åtkomst till ditt API.
Under Omdirigera URI, välj Webb som plattform. Bredvid det här alternativet anger du en unik URL för platsen där autentiseringssvaret ska returneras.
När du är klar väljer du Registrera.
Fliken Ägda program visar 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.
På sidan Översikt under Essentials kopierar och sparar du program-ID:t (klient) som ska användas som klient-ID för logikappen i del 3.
På menyn programidentitet går du till Hantera och väljer Certifikat och hemligheter.
På sidan Klienthemligheter väljer du Ny klienthemlighet.
I fönstret Lägg till en klienthemlighet för Beskrivning anger du ett namn på din hemlighet. För 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.
På sidan Certifikat och hemligheter på fliken Klienthemligheter visas nu din hemlighet tillsammans med ett hemligt värde och 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.
I avsnittet Identitetsprovider visas nu den nya 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 därför med följande steg för Azure Portal.
Hitta programidentitetens klient-ID och hyresgästd-ID för din webbapp eller API-app i Azure portal
På webbappmenyn går du till Hantera och väljer Autentisering.
I avsnittet Identitetsprovider hittar du din tidigare skapade programidentitet. Välj namnet på applikationens identitet.
På sidan Översikt hittar du värdena för applikations-ID (klient) och katalog-ID (tenant). Kopiera och spara värdena för användning i del 3.
Du kan också använda klient-ID:t GUID i din webbapps eller API-apps distributionsmall om det behövs. Detta GUID är din specifika abonnents GUID ("klient-ID") och bör visas på denna URL:
https://sts.windows.net/<tenant-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. För att skapa programidentiteten och sedan hitta klient-ID och tenant-ID, följer du föregående steg i del 2 för Azure-portalen. Du använder både klient-ID och hyresgäst-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 tenant-ID, inkludera dessa ID:n som en underdel av din webbapp eller API-app 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"
}
Fastighet | 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!
Skydda alltid känsliga och personliga data, till exempel autentiseringsuppgifter, hemligheter, åtkomstnycklar, anslutningssträngar, certifikat, tumavtryck och liknande information med högsta tillgängliga eller säkerhetsnivå som stöds.
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. Hårdkoda inte den här informationen, dela den med andra användare eller spara den i oformaterad text var som helst som andra kan komma åt. Konfigurera en plan för att rotera eller återkalla hemligheter om de skulle komprometteras. Mer information finns i följande resurser:
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-filen). |
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å valfritt språk som används för att skapa webbappen eller API-appen, bör du alltid använda den bästa tillgängliga eller stödda autentiseringsnivån.
Varning
Microsoft avråder från att använda följande flöden för autentisering och auktorisering:
Autentiseringsuppgifter för resursägares lösenord (ROPC) för OAuth 2.0
Med det här flödet kan du logga in på ett program med ett lösenord. Flödet är inte kompatibelt med multifaktorautentisering (MFA), kräver en mycket hög grad av förtroende för programmet och medför risker som inte finns i andra flöden. Använd endast det här flödet om andra säkrare flöden inte stöds eller är tillgängliga.
Mer information finns i Oauth 2.0 Resource Owner Password Credentials (Lösenordsuppgifter för Oauth 2.0-resursägare).
Implicit beviljandeflöde för OAuth 2.0
Det här tokenbaserade flödet är avsett för traditionella webbappar där servern har säkrare kontroll över bearbetning av
POST
data och ofta används med auktoriseringskodflödet. På grund av hur det här flödet hanterar och returnerar ID-token eller åtkomsttoken kräver flödet en mycket hög grad av förtroende för programmet och medför risker som inte finns i andra flöden. Använd endast det här flödet när andra säkrare flöden inte stöds eller är tillgängliga.För mer information, se OAuth 2.0 implicit beviljandeflöde.
I avsnittet Auktorisering tar du med följande egenskaper:
{
"type": "Basic",
"username": "<username>",
"password": "<password>"
}
Egendom | Obligatoriskt | Beskrivning |
---|---|---|
type |
Ja | Den autentiseringstyp som du vill använda. För grundläggande autentisering måste värdet vara **Basic** . |
username |
Ja | Det användarnamn 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 din logikapp med hjälp av kod, extraherar du huvudet som har JSON-webbtoken (JWT). Kontrollera anroparens identitet och avvisa begäranden som inte matchar.