Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In deze zelfstudie leert u hoe u een Azure App Service-app verbindt met een back-end Azure SQL-database door de aangemelde gebruiker te imiteren, ook wel de on-behalf-of-flow genoemd. Als u deze stroom wilt configureren, schakelt u ingebouwde App Service-verificatie in met behulp van de Microsoft Entra-id-provider.
Deze connectiviteitsmethode is geavanceerder dan de benadering van beheerde identiteit in zelfstudie: Toegang tot gegevens met beheerde identiteit en heeft de volgende voordelen in bedrijfsscenario's:
- Elimineert verbindingsgeheimen met back-endservices, net als de benadering van de beheerde identiteit.
- Geeft de back-enddatabase of andere Azure-services meer controle over hoeveel toegang moet worden verleend aan wie.
- Hiermee kan de app de gegevenspresentatie aanpassen aan de aangemelde gebruiker.
In deze zelfstudie voegt u Microsoft Entra-verificatie toe aan een .NET-web-app met een Azure SQL Database-back-end. U leert het volgende:
- Schakel Microsoft Entra-verificatie in voor Azure SQL Database.
- Schakel andere verificatieopties voor SQL Database uit.
- Voeg Microsoft Entra-id toe als id-provider voor uw app.
- Configureer de machtiging voor imitatie van SQL Database-gebruikers.
- Configureer App Service om een bruikbaar toegangstoken voor SQL Database te bieden.
- Open uw Azure SQL-database namens de aangemelde Microsoft Entra-gebruiker.
Wanneer u de zelfstudie hebt voltooid, maakt uw app veilig verbinding met SQL Database namens de aangemelde gebruiker.
Notitie
- Microsoft Entra-id wordt niet ondersteund voor on-premises SQL Server.
- Microsoft Entra-verificatie verschilt van Geïntegreerde Windows-verificatie in on-premises Active Directory (AD) Domain Services (DS). AD DS en Microsoft Entra ID maken gebruik van volledig verschillende verificatieprotocollen. Zie de documentatie van Microsoft Entra Domain Services voor meer informatie.
Vereisten
Toegang hebben tot een Microsoft Entra-tenant die is gevuld met gebruikers en groepen.
Voltooi de zelfstudie in Zelfstudie: Een ASP.NET Core- en SQL Database-app bouwen in Azure App Service en de voltooide app gebruiken voor deze zelfstudie.
U kunt ook de stappen aanpassen en uw eigen .NET-app gebruiken met SQL Database. De stappen in deze zelfstudie ondersteunen de volgende .NET-versies:
- .NET Framework 4.8 en hoger
- .NET 6.0 en hoger
Meld u aan bij Azure Cloud Shell of bereid uw omgeving voor om de Azure CLI te gebruiken.
Gebruik de Bash-omgeving in Azure Cloud Shell. Zie Aan de slag met Azure Cloud Shell voor meer informatie.
Als je de voorkeur geeft aan het lokaal uitvoeren van CLI-referentiecommando's, installeer dan de Azure CLI. Als je op Windows of macOS werkt, overweeg dan om Azure CLI in een Docker-container uit te voeren. Voor meer informatie, zie Hoe u de Azure CLI in een Docker-container kunt uitvoeren.
Als u een lokale installatie gebruikt, meldt u zich aan bij Azure CLI met de opdracht az login. Om het authenticatieproces te voltooien, volgt u de stappen die op uw terminal worden weergegeven. Zie Verifiëren bij Azure met behulp van Azure CLI voor andere aanmeldingsopties.
Wanneer u daarom wordt gevraagd, installeer de Azure CLI-extensie bij het eerste gebruik. Zie Extensies gebruiken en beheren met de Azure CLIvoor meer informatie over extensies.
Voer az version uit om de geïnstalleerde versie en de afhankelijke bibliotheken te vinden. Voer az upgrade uit om naar de nieuwste versie te upgraden.
1. Databaseserver configureren met Microsoft Entra-verificatie
Schakel Microsoft Entra-verificatie in voor de Azure SQL-database door een Microsoft Entra-gebruiker toe te wijzen als beheerder van de Azure SQL-server. De Microsoft Entra-beheerder moet een gebruiker zijn die is gemaakt, geïmporteerd, gesynchroniseerd of uitgenodigd in Microsoft Entra-id. De Microsoft Entra-gebruiker is mogelijk niet hetzelfde als de Microsoft-accountgebruiker voor het Azure-abonnement.
Voer de volgende Azure CLI-opdrachten uit om de Microsoft Entra ID-gebruiker toe te voegen als beheerder van de Azure SQL-server.
Gebruik
az ad user listdeze opdracht met dedisplay-nameparameter offilteromupnde object-id op te halen voor de Microsoft Entra ID-gebruiker die u beheerder wilt maken. De volgende opdracht bevat bijvoorbeeld informatie voor een Microsoft Entra ID-gebruiker met dedisplay-nameachternaam voornaam.az ad user list --display-name "Firstname Lastname"Kopieer de
idwaarde uit de uitvoer die u in de volgende stap wilt gebruiken.Aanbeveling
U kunt zelfstandig uitvoeren
az ad user listom informatie weer te geven voor alle gebruikers in de Microsoft Entra-directory.Voeg de Microsoft Entra ID-gebruiker toe als beheerder op uw Azure SQL-server met behulp van
az sql server ad-admin createdeobject-idparameter. Vervang in de volgende opdracht de<group-name>naam van de resourcegroep van de server,<server-name>door de naam van de server minus het.database.windows.netachtervoegsel en<entra-id>door deiduitvoer van de voorgaandeaz ad user listopdracht.az sql server ad-admin create --resource-group <group-name> --server-name <server-name> --display-name ADMIN --object-id <entra-id>Alleen databaseserververificatie beperken tot Microsoft Entra-verificatie. Met deze stap worden SQL-gebruikersnaam en -wachtwoordverificatie uitgeschakeld.
az sql server ad-only-auth enable --resource-group <group-name> --name <server-name>
- Zie Gebruikers toevoegen of verwijderen met behulp van Microsoft Entra-id voor meer informatie over het maken van een Microsoft Entra-gebruiker.
- Zie Microsoft Entra-functies en -beperkingen in SQL Database voor meer informatie over toegestane Microsoft Entra-gebruikers voor SQL Database.
- Zie Een Microsoft Entra-beheerder inrichten voor uw server voor meer informatie over het toevoegen van een Azure SQL-serverbeheerder.
2. Microsoft Entra ID-verificatie inschakelen voor uw app
Voeg Microsoft Entra-id toe als id-provider voor uw app. Zie Microsoft Entra-verificatie configureren voor uw App Services-toepassing voor meer informatie.
Selecteer verificatie onder Instellingen in het linkernavigatiemenu op de pagina Azure Portal voor uw app.
Selecteer op de pagina Verificatie de optie Id-providertoevoegen of selecteer Provider toevoegen in de sectie Id-provider .
Selecteer Microsoft als provider op de pagina Een id-provider toevoegen.
Voor verlooptijd van clientgeheim selecteert u een van de vervolgkeuzelijstopties, zoals Aanbevolen: 180 dagen.
Behoud alle standaardinstellingen en selecteer Toevoegen.
Notitie
Als u de verificatie-instellingen van uw app opnieuw configureert, worden de tokens in het tokenarchief mogelijk niet opnieuw gegenereerd vanuit de nieuwe instellingen. Meld u af en weer aan bij uw app om ervoor te zorgen dat uw tokens opnieuw worden gegenereerd. Een eenvoudige methode is het gebruik van uw browser in de privémodus. Sluit de browser en open deze opnieuw in de privémodus nadat u de instellingen in uw apps hebt gewijzigd.
3. Imitatie van SQL Database-gebruiker configureren
Ververleent uw app machtigingen voor toegang tot SQL Database namens de aangemelde Microsoft Entra-gebruiker.
Selecteer op de pagina Verificatie van de app uw app-naam onder Id-provider.
De pagina app-registratie wordt geopend. Deze registratie is automatisch gegenereerd toen u de Microsoft Entra-provider toevoegde.
Selecteer API-machtigingen onder Beheren in het linkernavigatiemenu.
Selecteer Een machtiging toevoegen op de pagina API-machtigingen.
Selecteer in het scherm Api-machtigingen aanvragen de API's die mijn organisatie gebruikt .
Voer Azure SQL Database in het zoekvak in en selecteer het resultaat.
Selecteer onder Welk type machtigingen uw toepassing vereist, gedelegeerde machtigingen, schakel het selectievakje naast user_impersonation in en selecteer machtigingen toevoegen.
De app-registratie in Microsoft Entra heeft nu de vereiste machtigingen om verbinding te maken met SQL Database door de aangemelde gebruiker te imiteren.
4. Configureer App Service om een bruikbaar toegangstoken te retourneren
Als u uw app wilt configureren om een bruikbaar toegangstoken voor SQL Database te bieden, voegt https://database.windows.net/user_impersonation u deze toe als een scope aan de Microsoft Entra-provider loginParametersvan de app. Met de volgende opdracht wordt de loginParameters eigenschap met aangepaste bereiken toegevoegd aan de instellingen van de Microsoft Entra-id-provider login .
Van de aangevraagde bereiken, vraagt App Service al en openidprofileemail bereiken standaard aan. Het offline_access bereik is opgenomen zodat u tokens kunt vernieuwen. Zie OpenID Connect-bereiken voor meer informatie.
Het https://database.windows.net/user_impersonation bereik verwijst naar Azure SQL Database en biedt een JSON-webtoken (JWT) waarmee SQL Database wordt opgegeven als de ontvanger van het token. Deze opdracht gebruikt jq voor JSON-verwerking, die al is geïnstalleerd in 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"
Aanbeveling
Als u het vereiste bereik wilt configureren met behulp van een webinterface in plaats van Azure CLI, gebruikt u De Microsoft Entra-provider configureren om vernieuwingstokens op te geven en deze toe te voegen aan https://database.windows.net/user_impersonation de aangevraagde bereiken.
Uw app is nu geconfigureerd om een toegangstoken te genereren dat door SQL Database wordt geaccepteerd.
Notitie
Toegangstokens verlopen na enige tijd. Zie Verificatietokens vernieuwen voor meer informatie over het vernieuwen van uw toegangstokens zonder dat gebruikers zich opnieuw moeten verifiëren met uw app.
5. Gebruik het toegangstoken in uw toepassingscode
Werk de toepassingscode bij om het toegangstoken toe te voegen dat is opgegeven door App Service-verificatie aan het verbindingsobject.
Notitie
Deze code werkt niet lokaal. Zie Lokaal fouten opsporen wanneer u App Service-verificatie gebruikt voor meer informatie en alternatieven voor lokale foutopsporing.
Wijzig in uw
DbContextobject in DatabaseContext.cs of een ander bestand dat de databasecontext configureert de standaardconstructor om het Microsoft Entra ID-toegangstoken toe te voegen aan het verbindingsobject.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"]; }Als u een verbindingsreeks hebt die wordt aangeroepen
defaultConnectionin App Service die GEBRUIKMAAKT van SQL-verificatie met een gebruikersnaam en wachtwoord, gebruikt u de volgende opdracht om de verbindingsgeheimen te verwijderen. Vervang<group-name>,<app-name>,<db-server-name>en<db-name>door uw waarden.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. Uw wijzigingen publiceren
Als u Visual Studio Code in de browser hebt gebruikt om uw codewijzigingen aan te brengen in uw GitHub-fork, selecteert u Broncodebeheer in het linkermenu. Voer een doorvoerbericht in zoals OBO connectdoorvoeren en selecteer Doorvoeren.
De doorvoer activeert een Implementatie van GitHub Actions in App Service. Wacht enkele minuten totdat de implementatie is voltooid.
U kunt uw wijzigingen ook publiceren in Git Bash met behulp van de volgende opdrachten:
git commit -am "configure managed identity"
git push azure main
Als uw code zich in Visual Studio bevindt:
Klik met de rechtermuisknop op uw project in Solution Explorer en selecteer Publiceren.
Selecteer Publiceren op de pagina Publiceren.
Wanneer de nieuwe app-pagina uw app weergeeft, maakt de app verbinding met de Azure SQL-database namens de aangemelde Microsoft Entra-gebruiker. U moet uw app op de gebruikelijke manier kunnen gebruiken en bewerken.
7. Het opschonen van resources
In de voorgaande stappen hebt u Azure-resources in een resourcegroep gemaakt. Wanneer u deze resources niet meer nodig hebt, verwijdert u de resourcegroep door de volgende opdracht uit te voeren:
az group delete --name <group-name>
Het uitvoeren van deze opdracht kan enige tijd duren.
Veelgestelde vragen
- Waarom krijg ik de fout 'Aanmelden is mislukt voor door de gebruiker< geïdentificeerde principal>'?
- Hoe kan ik andere Microsoft Entra-gebruikers of -groepen toevoegen in Azure SQL Database?
- Hoe kan ik lokaal fouten opsporen bij het gebruik van App Service-verificatie?
- Wat gebeurt er wanneer toegangstokens verlopen?
Waarom krijg ik de fout 'Aanmelden is mislukt voor door de gebruiker< geïdentificeerde principal>'?
De meest voorkomende oorzaken van een Login failed for user '<token-identified principal>' fout zijn:
- Microsoft Entra-verificatie is niet geconfigureerd voor de Azure SQL-database. Zie Databaseserver configureren met Microsoft Entra-verificatie.
- Geen geldig token in de
X-MS-TOKEN-AAD-ACCESS-TOKENaanvraagheader. Deze code werkt niet in lokale omgevingen. Zie Fouten lokaal opsporen wanneer u App Service-verificatie gebruikt voor meer informatie en alternatieven. - De gebruiker is niet gemachtigd om verbinding te maken met de database. Zie Andere Microsoft Entra-gebruikers of -groepen toevoegen in Azure SQL Database om gebruikers en machtigingen toe te voegen.
Hoe kan ik andere Microsoft Entra-gebruikers of -groepen toevoegen in Azure SQL Database?
Als u meer gebruikers of groepen wilt toevoegen, maakt u verbinding met uw databaseserver met behulp van sqlcmd of SQL Server Management Studio (SSMS) en maakt u ingesloten databasegebruikers die zijn toegewezen aan Microsoft Entra-identiteiten.
Het volgende Transact-SQL voorbeeld voegt een Microsoft Entra-identiteit toe aan SQL Server en geeft de identiteit enkele databaserollen:
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
Hoe kan ik lokaal fouten opsporen bij het gebruik van App Service-verificatie?
Omdat App Service-verificatie een Azure-functie is, werkt de code in deze zelfstudie niet in uw lokale omgeving. In tegenstelling tot een app die wordt uitgevoerd in Azure, profiteert uw lokale code niet van de Middleware voor App Service-verificatie. U kunt de volgende alternatieven gebruiken voor lokale foutopsporing:
- Maak verbinding met SQL Database vanuit uw lokale omgeving met
Active Directory Interactiveverificatie. Deze verificatiestroom meldt zich niet aan bij de gebruiker zelf, maar maakt verbinding met de back-enddatabase met de aangemelde gebruiker, zodat u de databaseautorisatie lokaal kunt testen. - Kopieer het toegangstoken handmatig naar uw code in plaats van de
X-MS-TOKEN-AAD-ACCESS-TOKENaanvraagheader. - Als u implementeert vanuit Visual Studio, gebruikt u externe foutopsporing van uw App Service-app.
Wat gebeurt er wanneer toegangstokens verlopen?
Uw toegangstoken verloopt na bepaalde tijd. Voor meer informatie over het vernieuwen van uw toegangstokens zonder dat gebruikers zich opnieuw moeten verifiëren bij uw app raadpleegt u Toegangstokens van id-providers vernieuwen.
Verwante inhoud
- Zelfstudie: Verbinding maken met Azure-databases vanuit App Service zonder geheimen met behulp van een beheerde identiteit
- Zelfstudie: Microsoft Graph openen vanuit een beveiligde .NET-app als de app
- Zelfstudie: Back-endcommunicatie isoleren met Virtual Network-integratie
- Een bestaande aangepaste DNS-naam toewijzen aan Azure App Service