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.
Den här självstudien visar hur du ansluter en Azure App Service-app till en Azure SQL-serverdelsdatabas genom att personifiera den inloggade användaren, som även kallas för flödets räkning. För att konfigurera det här flödet aktiverar du inbyggd App Service-autentisering med hjälp av Microsoft Entra-identitetsprovidern.
Den här anslutningsmetoden är mer avancerad än metoden för hanterad identitet i Självstudie: Få åtkomst till data med hanterad identitet och har följande fördelar i företagsscenarier:
- Eliminerar anslutningshemligheter till serverdelstjänster, liksom metoden för hanterad identitet.
- Ger serverdelsdatabasen eller andra Azure-tjänster mer kontroll över hur mycket åtkomst som ska beviljas till vem.
- Låter appen anpassa sin datapresentation till den inloggade användaren.
I den här självstudien lägger du till Microsoft Entra-autentisering i en .NET-webbapp som har en Azure SQL Database-serverdel. Du lär dig att:
- Aktivera Microsoft Entra-autentisering för Azure SQL Database.
- Inaktivera andra autentiseringsalternativ för SQL Database.
- Lägg till Microsoft Entra-ID som identitetsprovider för din app.
- Konfigurera behörighet att personifiera SQL Database-användare.
- Konfigurera App Service för att tillhandahålla en användbar åtkomsttoken för SQL Database.
- Få åtkomst till din Azure SQL-databas för den inloggade Microsoft Entra-användarens räkning.
När du slutför självstudien ansluter appen säkert till SQL Database för den inloggade användarens räkning.
               
              
            
Kommentar
- Microsoft Entra-ID stöds inte för lokal SQL Server.
- Microsoft Entra-autentisering skiljer sig från integrerad Windows-autentisering i lokala Active Directory (AD) Domain Services (DS). AD DS och Microsoft Entra ID använder helt olika autentiseringsprotokoll. Mer information finns i Dokumentation om Microsoft Entra Domain Services.
Förutsättningar
- Ha åtkomst till en Microsoft Entra-klient som är fylld med användare och grupper. 
- Slutför självstudien i Självstudie: Skapa en ASP.NET Core- och SQL Database-app i Azure App Service och använd den färdiga appen för den här självstudien. - Du kan också anpassa stegen och använda din egen .NET-app med SQL Database. Stegen i den här självstudien stöder följande .NET-versioner: - .NET Framework 4.8 och senare
- .NET 6.0 och senare
 
- Logga in på Azure Cloud Shell eller förbered din miljö för att använda Azure CLI. - Använd Bash-miljön i Azure Cloud Shell. Mer information finns i Kom igång med Azure Cloud Shell. 
- Om du föredrar att köra CLI-referenskommandon lokalt installerar du Azure CLI. Om du kör på Windows eller macOS, överväg att köra Azure CLI i en Docker-container. För mer information, se Hur man kör Azure CLI i en Docker-container. - Om du använder en lokal installation loggar du in på Azure CLI med hjälp av kommandot az login. För att avsluta autentiseringsprocessen, följ stegen som visas i din terminal. Andra inloggningsalternativ finns i Autentisera till Azure med Azure CLI. 
- När du blir uppmanad, installera Azure CLI-tillägget vid första användning. Mer information om tillägg finns i Använda och hantera tillägg med Azure CLI. 
- Kör az version för att ta reda på versionen och de beroende bibliotek som är installerade. Om du vill uppgradera till den senaste versionen kör du az upgrade. 
 
 
1. Konfigurera databasservern med Microsoft Entra-autentisering
Aktivera Microsoft Entra-autentisering till Azure SQL-databasen genom att tilldela en Microsoft Entra-användare som administratör för Azure SQL-servern. Microsoft Entra-administratören måste vara en användare som skapas, importeras, synkroniseras eller bjuds in till Microsoft Entra-ID. Microsoft Entra-användaren kanske inte är samma som Microsoft-kontoanvändaren för Azure-prenumerationen.
Om du vill lägga till Microsoft Entra-ID-användaren som administratör för Azure SQL-servern kör du följande Azure CLI-kommandon.
- Använd - az ad user listmed parametern- display-name,- filtereller- upnför att hämta objekt-ID:t för den Microsoft Entra-ID-användare som du vill göra till administratör. Följande kommando visar till exempel information för en Microsoft Entra-ID-användare med- display-nameförnamn efternamn.- az ad user list --display-name "Firstname Lastname"- Kopiera värdet - idfrån utdata som ska användas i nästa steg.- Tips - Du kan köra - az ad user listfristående för att visa information för alla användare i Microsoft Entra-katalogen.
- Lägg till Microsoft Entra-ID-användaren som administratör på azure SQL-servern med hjälp - az sql server ad-admin createav parametern- object-id. I följande kommando ersätter du- <group-name>med serverns resursgruppnamn,- <server-name>med serverns namn minus suffixet- .database.windows.netoch- <entra-id>med- idutdata från föregående- az ad user listkommando.- az sql server ad-admin create --resource-group <group-name> --server-name <server-name> --display-name ADMIN --object-id <entra-id>
- Begränsa endast databasserverautentisering till Microsoft Entra-autentisering. Det här steget inaktiverar autentisering av SQL-användarnamn och lösenord. - az sql server ad-only-auth enable --resource-group <group-name> --name <server-name>
- Mer information om hur du skapar en Microsoft Entra-användare finns i Lägga till eller ta bort användare med hjälp av Microsoft Entra-ID.
- Mer information om tillåtna Microsoft Entra-användare för SQL Database finns i Microsoft Entra-funktioner och begränsningar i SQL Database.
- Mer information om hur du lägger till en Azure SQL-serveradministratör finns i Etablera en Microsoft Entra-administratör för servern.
2. Aktivera Microsoft Entra-ID-autentisering för din app
Lägg till Microsoft Entra-ID som identitetsprovider för din app. Mer information finns i Konfigurera Microsoft Entra-autentisering för ditt App Services-program.
- På sidan Azure-portalen för din app väljer du Autentisering under Inställningar i den vänstra navigeringsmenyn. 
- På sidan Autentisering väljer du Lägg till identitetsprovider eller väljer Lägg till provider i avsnittet Identitetsprovider . 
- På sidan Lägg till en identitetsprovider väljer du Microsoft som provider. 
- För Förfallodatum för klienthemlighet väljer du något av listrutans alternativ, till exempel Rekommenderas: 180 dagar. 
- Behåll alla standardinställningar och välj Lägg till. 
Kommentar
Om du konfigurerar om appens autentiseringsinställningar kanske token i tokenarkivet inte återskapas från de nya inställningarna. Logga ut och logga in i appen igen för att se till att dina token återskapas. En enkel metod är att använda webbläsaren i privat läge. Stäng och öppna webbläsaren igen i privat läge när du har ändrat inställningarna i dina appar.
3. Konfigurera SQL Database-användarpersonifiering
Ge din app behörighet att komma åt SQL Database för den inloggade Microsoft Entra-användarens räkning.
- På appens autentiseringssida väljer du ditt appnamn under Identitetsprovider. - Sidan för appregistrering öppnas. Den här registreringen genererades automatiskt när du lade till Microsoft Entra-providern. 
- Välj API-behörigheter under Hantera i den vänstra navigeringsmenyn. 
- På sidan API-behörigheter väljer du Lägg till en behörighet. 
- På skärmen Api-behörigheter för begäran väljer du fliken API:er som min organisation använder . 
- Ange Azure SQL Database i sökrutan och välj resultatet. 
- Under Vilken typ av behörigheter kräver ditt program väljer du Delegerade behörigheter och markerar sedan kryssrutan bredvid user_impersonation och väljer sedan Lägg till behörigheter.   
Appregistreringen i Microsoft Entra har nu de behörigheter som krävs för att ansluta till SQL Database genom att personifiera den inloggade användaren.
4. Konfigurera App Service för att returnera en användbar åtkomsttoken
Om du vill konfigurera din app för att tillhandahålla en användbar åtkomsttoken för SQL Database lägger du till https://database.windows.net/user_impersonation som en scope i appens Microsoft Entra-provider loginParameters. Följande kommando lägger till loginParameters egenskapen med anpassade omfång i inställningarna för Microsoft Entra-identitetsprovidern login .
Av de begärda omfången begär openidApp Service redan , profileoch email omfång som standard. Omfånget offline_access ingår så att du kan uppdatera token. Mer information finns i OpenID Connect-omfång.
Omfånget https://database.windows.net/user_impersonation refererar till Azure SQL Database och tillhandahåller en JSON-webbtoken (JWT) som anger SQL Database som tokenmottagare. Det här kommandot använder jq för JSON-bearbetning, som redan är installerat i Cloud Shell.
authSettings=$(az webapp auth show --resource-group <group-name> --name <app-name>)
authSettings=$(echo "$authSettings" | jq '.properties' | jq '.identityProviders.azureActiveDirectory.login += {"loginParameters":["scope=openid profile email offline_access https://database.windows.net/user_impersonation"]}')
az webapp auth set --resource-group <group-name> --name <app-name> --body "$authSettings"
Tips
Om du vill konfigurera det nödvändiga omfånget med hjälp av ett webbgränssnitt i stället för Azure CLI använder du Konfigurera Microsoft Entra-providern för att tillhandahålla uppdateringstoken och lägger https://database.windows.net/user_impersonation till i de begärda omfången.
Din app är nu konfigurerad för att generera en åtkomsttoken som SQL Database accepterar.
Kommentar
Åtkomsttoken upphör att gälla efter en viss tid. Information om hur du uppdaterar dina åtkomsttoken utan att kräva att användarna autentiserar igen med din app finns i Uppdatera autentiseringstoken.
5. Använd åtkomsttoken i programkoden
Uppdatera programkoden för att lägga till den åtkomsttoken som tillhandahålls av App Service-autentisering till anslutningsobjektet.
Kommentar
Den här koden fungerar inte lokalt. Mer information och alternativ för lokal felsökning finns i Felsöka lokalt när du använder App Service-autentisering.
- I objektet - DbContexti DatabaseContext.cs eller en annan fil som konfigurerar databaskontexten ändrar du standardkonstruktorn för att lägga till Åtkomsttoken för Microsoft Entra-ID i anslutningsobjektet.- public MyDatabaseContext (DbContextOptions<MyDatabaseContext> options, IHttpContextAccessor accessor) : base(options) { var conn = Database.GetDbConnection() as SqlConnection; conn.AccessToken = accessor.HttpContext.Request.Headers["X-MS-TOKEN-AAD-ACCESS-TOKEN"]; }
- Om du har en anslutningssträng som heter - defaultConnectioni App Service som använder SQL-autentisering med ett användarnamn och lösenord använder du följande kommando för att ta bort anslutningshemligheterna. Ersätt- <group-name>,- <app-name>,- <db-server-name>och- <db-name>med dina värden.- az webapp config connection-string set --resource-group <group-name> --name <app-name> --connection-string-type SQLAzure --settings defaultConnection="server=tcp:<db-server-name>.database.windows.net;database=<db-name>;"
6. Publicera dina ändringar
Om du använde Visual Studio Code i webbläsaren för att göra dina kodändringar i din GitHub-förgrening väljer du Källkontroll på den vänstra menyn. Ange ett incheckningsmeddelande som OBO connect och välj Checka in.
Incheckningen utlöser en GitHub Actions-distribution till App Service. Vänta några minuter tills distributionen är klar.
Du kan också publicera dina ändringar i Git Bash med hjälp av följande kommandon:
git commit -am "configure managed identity"
git push azure main
Om koden finns i Visual Studio:
- Högerklicka på projektet i Solution Explorer och välj Publicera. 
- På sidan Publicera väljer du Publicera. 
När den nya appsidan visar din app ansluter appen till Azure SQL-databasen för den inloggade Microsoft Entra-användarens räkning. Du bör kunna använda och redigera din app som vanligt.
               
              
            
7. Rensa resurser
I de föregående stegen skapade du Azure-resurser i en resursgrupp. När du inte längre behöver dessa resurser tar du bort resursgruppen genom att köra följande kommando:
az group delete --name <group-name>
Det här kommandot kan ta lite tid att köra.
Vanliga frågor och svar
- Varför visas felet "Inloggningen misslyckades för användarens< tokenidentifierade huvudnamn>"?
- Hur gör jag för att lägga till andra Microsoft Entra-användare eller -grupper i Azure SQL Database?
- Hur gör jag för att felsöka lokalt när du använder App Service-autentisering?
- Vad händer när åtkomsttoken upphör att gälla?
Varför visas felet "Inloggningen misslyckades för användarens< tokenidentifierade huvudnamn>"?
De vanligaste orsakerna till ett Login failed for user '<token-identified principal>' fel är:
- Microsoft Entra-autentisering har inte konfigurerats för Azure SQL-databasen. Se Konfigurera databasserver med Microsoft Entra-autentisering.
- Ingen giltig token i begärandehuvudet X-MS-TOKEN-AAD-ACCESS-TOKEN. Den här koden fungerar inte i lokala miljöer. Mer information och alternativ finns i Felsöka lokalt när du använder App Service-autentisering.
- Användaren har inte behörighet att ansluta till databasen. Information om hur du lägger till användare och behörigheter finns i Lägga till andra Microsoft Entra-användare eller -grupper i Azure SQL Database.
Hur gör jag för att lägga till andra Microsoft Entra-användare eller -grupper i Azure SQL Database?
Om du vill lägga till fler användare eller grupper ansluter du till databasservern med sqlcmd eller SQL Server Management Studio (SSMS) och skapar oberoende databasanvändare som mappats till Microsoft Entra-identiteter.
Följande Transact-SQL exempel lägger till en Microsoft Entra-identitet till SQL Server och ger identiteten vissa databasroller:
CREATE USER [<user-or-group-name>] FROM EXTERNAL PROVIDER;
ALTER ROLE db_datareader ADD MEMBER [<user-or-group-name>];
ALTER ROLE db_datawriter ADD MEMBER [<user-or-group-name>];
ALTER ROLE db_ddladmin ADD MEMBER [<user-or-group-name>];
GO
Hur gör jag för att felsöka lokalt när du använder App Service-autentisering?
Eftersom App Service-autentisering är en Azure-funktion fungerar inte koden i den här självstudien i din lokala miljö. Till skillnad från en app som körs i Azure drar din lokala kod inte nytta av Mellanprogrammet för App Service-autentisering. Du kan använda följande alternativ för lokal felsökning:
- Anslut till SQL Database från din lokala miljö med Active Directory Interactiveautentisering. Det här autentiseringsflödet loggar inte in själva användaren, men ansluter till serverdelsdatabasen med den inloggade användaren så att du kan testa databasauktoriseringen lokalt.
- Kopiera åtkomsttoken manuellt till din kod i stället för begärandehuvudet X-MS-TOKEN-AAD-ACCESS-TOKEN.
- Om du distribuerar från Visual Studio använder du fjärrfelsökning av din App Service-app.
Vad händer när åtkomsttoken upphör att gälla?
Ditt åtkomsttoken upphör att gälla efter ett tag. Information om hur du uppdaterar dina åtkomsttoken utan att användarna måste autentiseras på nytt med din app finns på sidan om att uppdatera token för identitetsprovider.
Relaterat innehåll
- Självstudie: Ansluta till Azure-databaser från App Service utan hemligheter med hjälp av en hanterad identitet
- Självstudie: Få åtkomst till Microsoft Graph från en skyddad .NET-app som app
- Självstudie: Isolera serverdelskommunikation med integrering av virtuellt nätverk
- Mappa ett befintligt anpassat DNS-namn till Azure App Service
 
 
              
              