Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Lernprogramm wird gezeigt, wie Sie eine Azure App Service-App mit einer Back-End-Azure SQL-Datenbank verbinden, indem Sie den Identitätswechsel des angemeldeten Benutzers durchführen, der auch als " Im Auftrag von"-Fluss bezeichnet wird. Um diesen Fluss zu konfigurieren, aktivieren Sie die integrierte App Service-Authentifizierung mithilfe des Microsoft Entra-Identitätsanbieters.
Diese Konnektivitätsmethode ist fortgeschrittener als der Ansatz für verwaltete Identitäten im Lernprogramm: Zugreifen auf Daten mit verwalteter Identität und hat die folgenden Vorteile in Unternehmensszenarien:
- Entfernt Verbindungsgeheimnisse mit Back-End-Diensten, ebenso wie der Ansatz für verwaltete Identitäten.
- Bietet der Back-End-Datenbank oder anderen Azure-Diensten mehr Kontrolle darüber, wie viel Zugriff auf wen gewährt werden soll.
- Ermöglicht der App das Anpassen der Datendarstellung an den angemeldeten Benutzer bzw. an die angemeldete Benutzerin.
In diesem Lernprogramm fügen Sie eine Microsoft Entra-Authentifizierung zu einer .NET-Web-App hinzu, die über ein Azure SQL-Datenbank-Back-End verfügt. Hier erfahren Sie, wie Sie:
- Aktivieren Sie die Microsoft Entra-Authentifizierung für Azure SQL-Datenbank.
- Deaktivieren Sie andere SQL-Datenbankauthentifizierungsoptionen.
- Fügen Sie Microsoft Entra-ID als Identitätsanbieter für Ihre App hinzu.
- Konfigurieren Der Identitätswechselberechtigung für SQL-Datenbankbenutzer.
- Konfigurieren Sie App Service, um ein verwendbares Zugriffstoken für SQL-Datenbank bereitzustellen.
- Greifen Sie im Namen des angemeldeten Microsoft Entra-Benutzers auf Ihre Azure SQL-Datenbank zu.
Wenn Sie das Lernprogramm abgeschlossen haben, stellt Ihre App sicher eine Verbindung mit der SQL-Datenbank im Namen des angemeldeten Benutzers herstellt.
Hinweis
- Microsoft Entra-ID wird für lokale SQL Server nicht unterstützt.
- Die Microsoft Entra-Authentifizierung unterscheidet sich von der integrierten Windows-Authentifizierung in lokalen Active Directory (AD) Domain Services (DS). AD DS und Microsoft Entra ID verwenden grundverschiedene Authentifizierungsprotokolle. Weitere Informationen finden Sie unter Dokumentation zu Microsoft Entra Domain Services.
Voraussetzungen
Zugriff auf einen Microsoft Entra-Mandanten haben, der mit Benutzern und Gruppen gefüllt ist.
Führen Sie das Lernprogramm im Lernprogramm aus: Erstellen Sie eine ASP.NET Core- und SQL-Datenbank-App in Azure App Service, und verwenden Sie die fertige App für dieses Lernprogramm.
Alternativ können Sie die Schritte anpassen und Ihre eigene .NET-App mit SQL-Datenbank verwenden. Die Schritte in diesem Lernprogramm unterstützen die folgenden .NET-Versionen:
- .NET Framework 4.8 und höher
- .NET 6.0 und höher
Melden Sie sich bei Azure Cloud Shell an, oder bereiten Sie Ihre Umgebung für die Verwendung der Azure CLI vor.
Verwenden Sie die Bash-Umgebung in Azure Cloud Shell. Weitere Informationen finden Sie unter "Erste Schritte mit Azure Cloud Shell".
Wenn Sie CLI-Referenzbefehle lieber lokal ausführen möchten, installieren Sie die Azure CLI. Wenn Sie mit Windows oder macOS arbeiten, sollten Sie die Azure CLI in einem Docker-Container ausführen. Weitere Informationen finden Sie unter Ausführen der Azure CLI in einem Docker-Container.
Wenn Sie eine lokale Installation verwenden, melden Sie sich mithilfe des Befehls az login bei der Azure CLI an. Um den Authentifizierungsprozess abzuschließen, führen Sie die schritte aus, die in Ihrem Terminal angezeigt werden. Weitere Anmeldeoptionen finden Sie unter Authentifizieren bei Azure mithilfe der Azure CLI.
Wenn Sie dazu aufgefordert werden, installieren Sie die Azure CLI-Erweiterung bei der ersten Verwendung. Weitere Informationen zu Erweiterungen finden Sie unter Verwenden und Verwalten von Erweiterungen mit der Azure CLI.
Führen Sie az version aus, um die installierte Version und die abhängigen Bibliotheken zu ermitteln. Führen Sie az upgrade aus, um auf die neueste Version zu aktualisieren.
1. Konfigurieren des Datenbankservers mit Microsoft Entra-Authentifizierung
Aktivieren Sie die Microsoft Entra-Authentifizierung für die Azure SQL-Datenbank, indem Sie einen Microsoft Entra-Benutzer als Administrator des Azure SQL-Servers zuweisen. Der Microsoft Entra-Administrator muss ein Benutzer sein, der erstellt, importiert, synchronisiert oder zur Microsoft Entra-ID eingeladen wird. Der Microsoft Entra-Benutzer ist möglicherweise nicht mit dem Microsoft-Kontobenutzer für das Azure-Abonnement identisch.
Führen Sie die folgenden Azure CLI-Befehle aus, um den Microsoft Entra-ID-Benutzer als Administrator des Azure SQL-Servers hinzuzufügen.
Verwenden Sie
az ad user listdiesen Parameterfilterdisplay-nameupn, um die Objekt-ID für den Microsoft Entra ID-Benutzer abzurufen, den Sie zum Administrator machen möchten. Der folgende Befehl listet beispielsweise Informationen für einen Microsoft Entra ID-Benutzer mit demdisplay-nameNachnamen "Vorname" auf.az ad user list --display-name "Firstname Lastname"Kopieren Sie den
idWert aus der Ausgabe, die im nächsten Schritt verwendet werden soll.Tipp
Sie können eigenständig ausführen
az ad user list, um Informationen für alle Benutzer im Microsoft Entra-Verzeichnis anzuzeigen.Fügen Sie den Microsoft Entra ID-Benutzer mithilfe des
object-idParameters als Administrator auf Ihrem Azure SQL-Serveraz sql server ad-admin createhinzu. Ersetzen Sie<group-name>im folgenden Befehl den Ressourcengruppennamen<server-name>Des Servers durch den Namen des Servers minus des.database.windows.netSuffixes und<entra-id>durch dieidAusgabe des vorherigenaz ad user listBefehls.az sql server ad-admin create --resource-group <group-name> --server-name <server-name> --display-name ADMIN --object-id <entra-id>Beschränken Sie die Datenbankserverauthentifizierung nur auf die Microsoft Entra-Authentifizierung. In diesem Schritt wird die SQL-Benutzernamen- und Kennwortauthentifizierung deaktiviert.
az sql server ad-only-auth enable --resource-group <group-name> --name <server-name>
- Weitere Informationen zum Erstellen eines Microsoft Entra-Benutzers finden Sie unter Hinzufügen oder Löschen von Benutzern mithilfe der Microsoft Entra-ID.
- Weitere Informationen zu zulässigen Microsoft Entra-Benutzern für SQL-Datenbank finden Sie unter Microsoft Entra-Features und -Einschränkungen in der SQL-Datenbank.
- Weitere Informationen zum Hinzufügen eines Azure SQL Server-Administrators finden Sie unter Bereitstellen eines Microsoft Entra-Administrators für Ihren Server.
2. Aktivieren der Microsoft Entra ID-Authentifizierung für Ihre App
Fügen Sie Microsoft Entra-ID als Identitätsanbieter für Ihre App hinzu. Weitere Informationen finden Sie unter Konfigurieren der Microsoft Entra-Authentifizierung für die App Services-Anwendung.
Wählen Sie auf der Azure-Portalseite für Ihre App unter "Einstellungen" im linken Navigationsmenü die Option "Authentifizierung" aus.
Wählen Sie auf der Seite "Authentifizierung " die Option " Identitätsanbieter hinzufügen" aus, oder wählen Sie " Anbieter hinzufügen " im Abschnitt " Identitätsanbieter " aus.
Wählen Sie auf der Seite " Identitätsanbieter hinzufügen " Microsoft als Anbieter aus.
Wählen Sie für den Ablauf des geheimen Clientschlüssels eine der Dropdownlistenoptionen aus, z. B. empfohlen: 180 Tage.
Behalten Sie alle Standardeinstellungen bei, und wählen Sie "Hinzufügen" aus.
Hinweis
Wenn Sie die Authentifizierungseinstellungen Ihrer App neu konfigurieren, werden die Token im Tokenspeicher möglicherweise nicht aus den neuen Einstellungen neu generiert. Um sicherzustellen, dass Ihre Token neu generiert werden, melden Sie sich ab und wieder bei Ihrer App an. Eine einfache Methode besteht darin, Ihren Browser im privaten Modus zu verwenden. Schließen Sie den Browser, und öffnen Sie den Browser im privaten Modus, nachdem Sie die Einstellungen in Ihren Apps geändert haben.
3. Konfigurieren des Identitätswechsels von SQL-Datenbankbenutzern
Gewähren Sie Ihrer App Berechtigungen für den Zugriff auf die SQL-Datenbank im Namen des angemeldeten Microsoft Entra-Benutzers.
Wählen Sie auf der Seite " Authentifizierung " der App ihren App-Namen unter "Identitätsanbieter" aus.
Die App-Registrierungsseite wird geöffnet. Diese Registrierung wurde automatisch generiert, wenn Sie den Microsoft Entra-Anbieter hinzugefügt haben.
Wählen Sie im linken Navigationsmenü die API-Berechtigungen unter "Verwalten" aus.
Wählen Sie auf der Seite "API-Berechtigungen" die Option "Berechtigung hinzufügen" aus.
Wählen Sie auf dem Bildschirm "Api-Berechtigungen anfordern " die Registerkarte "APIs, die meine Organisation verwendet" aus .
Geben Sie die Azure SQL-Datenbank in das Suchfeld ein, und wählen Sie das Ergebnis aus.
Wählen Sie unter welchen Berechtigungstyp Ihre Anwendung benötigt, delegierte Berechtigungen aus, und aktivieren Sie dann das Kontrollkästchen neben user_impersonation, und wählen Sie dann "Berechtigungen hinzufügen" aus.
Die App-Registrierung in Microsoft Entra verfügt jetzt über die erforderlichen Berechtigungen, um eine Verbindung mit der SQL-Datenbank herzustellen, indem der Identitätswechsel des angemeldeten Benutzers erfolgt.
4. Konfigurieren von App Service für die Rückgabe eines verwendbaren Zugriffstokens
Um Ihre App so zu konfigurieren, dass ein verwendbares Zugriffstoken für DIE SQL-Datenbank bereitgestellt wird, fügen https://database.windows.net/user_impersonation Sie dem Microsoft Entra-Anbieter loginParametersder App hinzuscope. Der folgende Befehl fügt die loginParameters Eigenschaft mit benutzerdefinierten Bereichen zu den Microsoft Entra Identity Provider-Einstellungen hinzu login .
Von den angeforderten Bereichen fordert Der App-Dienst standardmäßig bereits Anopenidprofile, und email Bereiche. Der offline_access Bereich ist enthalten, damit Sie Token aktualisieren können. Weitere Informationen finden Sie unter OpenID Connect-Bereiche.
Der https://database.windows.net/user_impersonation Bereich bezieht sich auf Azure SQL-Datenbank und stellt ein JSON-Webtoken (JWT) bereit, das DIE SQL-Datenbank als Tokenempfänger angibt. Dieser Befehl verwendet jq die JSON-Verarbeitung, die bereits in Cloud Shell installiert ist.
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"
Tipp
Um den erforderlichen Bereich mithilfe einer Webschnittstelle anstelle von Azure CLI zu konfigurieren, verwenden Sie den Microsoft Entra-Anbieter zum Bereitstellen von Aktualisierungstoken, um die angeforderten Bereiche hinzuzufügen https://database.windows.net/user_impersonation .
Ihre App ist jetzt so konfiguriert, dass ein Zugriffstoken generiert wird, das sql-Datenbank akzeptiert.
Hinweis
Zugriffstoken laufen nach einiger Zeit ab. Informationen zum Aktualisieren Ihrer Zugriffstoken, ohne dass Benutzer erneut mit Ihrer App authentifizieren müssen, finden Sie unter Aktualisieren von Authentifizierungstoken.
5. Verwenden des Zugriffstokens in Ihrem Anwendungscode
Aktualisieren Sie Den Anwendungscode, um das zugriffstoken, das von der App Service-Authentifizierung zum Verbindungsobjekt bereitgestellt wird, hinzuzufügen.
Hinweis
Dieser Code funktioniert nicht lokal. Weitere Informationen und Alternativen für das lokale Debuggen finden Sie unter "Lokal debuggen", wenn Sie die App Service-Authentifizierung verwenden.
Ändern Sie in Ihrem
DbContextObjekt in DatabaseContext.cs oder einer anderen Datei, die den Datenbankkontext konfiguriert, den Standardkonstruktor, um das Microsoft Entra ID-Zugriffstoken zum Verbindungsobjekt hinzuzufügen.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"]; }Wenn Sie über eine Verbindungszeichenfolge verfügen, die in App Service aufgerufen wird
defaultConnection, die SQL-Authentifizierung mit einem Benutzernamen und Kennwort verwendet, verwenden Sie den folgenden Befehl, um die geheimen Verbindungsschlüssel zu entfernen. Ersetzen Sie<group-name>,<app-name>,<db-server-name>und<db-name>verwenden Sie Ihre Werte.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. Veröffentlichen Ihrer Änderungen
Wenn Sie Visual Studio Code im Browser verwendet haben, um Ihre Codeänderungen in Ihrer GitHub-Verzweigung vorzunehmen, wählen Sie im linken Menü die Quellcodeverwaltung aus. Geben Sie eine Commit-Nachricht wie OBO connect "Commit" ein, und wählen Sie "Commit ausführen" aus.
Der Commit löst eine GitHub Actions-Bereitstellung für App Service aus. Warten Sie einige Minuten, bis die Bereitstellung abgeschlossen ist.
Sie können Ihre Änderungen auch in Git Bash veröffentlichen, indem Sie die folgenden Befehle verwenden:
git commit -am "configure managed identity"
git push azure main
Wenn sich Ihr Code in Visual Studio befindet:
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf Ihr Projekt, und wählen Sie "Veröffentlichen" aus.
Wählen Sie auf der Seite "Veröffentlichen" die Option "Veröffentlichen" aus.
Wenn die neue App-Seite Ihre App anzeigt, stellt die App eine Verbindung mit der Azure SQL-Datenbank im Namen des angemeldeten Microsoft Entra-Benutzers herstellt. Sie sollten Ihre App wie gewohnt verwenden und bearbeiten können.
7. Bereinigen von Ressourcen
In den vorherigen Schritten haben Sie Azure-Ressourcen in einer Ressourcengruppe erstellt. Wenn Sie diese Ressourcen nicht mehr benötigen, löschen Sie die Ressourcengruppe, indem Sie den folgenden Befehl ausführen:
az group delete --name <group-name>
Dieser Befehl kann einige Zeit dauern, bis er ausgeführt wird.
Häufig gestellte Fragen
- Warum erhalte ich einen Fehler "Login failed for user '<token-identified principal>'"?
- Wie kann ich in Azure SQL-Datenbank weitere Microsoft Entra-Benutzer*innen oder -Gruppen hinzufügen?
- Wie kann ich bei Verwendung der App Service-Authentifizierung lokal debuggen?
- Was passiert, wenn Zugriffstoken ablaufen?
Warum erhalte ich einen Fehler "Login failed for user '<token-identified principal>'"?
Die häufigsten Ursachen für einen Login failed for user '<token-identified principal>' Fehler sind:
- Die Microsoft Entra-Authentifizierung ist nicht für die Azure SQL-Datenbank konfiguriert. Siehe Konfigurieren des Datenbankservers mit microsoft Entra-Authentifizierung.
- Kein gültiges Token im Anforderungsheader
X-MS-TOKEN-AAD-ACCESS-TOKEN. Dieser Code funktioniert nicht in lokalen Umgebungen. Weitere Informationen und Alternativen finden Sie unter "Lokal debuggen", wenn Sie die App Service-Authentifizierung verwenden. - Der Benutzer verfügt nicht über die Berechtigung zum Herstellen einer Verbindung mit der Datenbank. Informationen zum Hinzufügen von Benutzern und Berechtigungen finden Sie unter Hinzufügen anderer Microsoft Entra-Benutzer oder -Gruppen in der Azure SQL-Datenbank.
Wie kann ich in Azure SQL-Datenbank weitere Microsoft Entra-Benutzer*innen oder -Gruppen hinzufügen?
Wenn Sie weitere Benutzer oder Gruppen hinzufügen möchten, stellen Sie eine Verbindung mit Ihrem Datenbankserver mithilfe von sqlcmd oder SQL Server Management Studio (SSMS) her, und erstellen Sie enthaltene Datenbankbenutzer , die Microsoft Entra-Identitäten zugeordnet sind.
Im folgenden Transact-SQL Beispiel wird SQL Server eine Microsoft Entra-Identität hinzugefügt und der Identität einige Datenbankrollen zugewiesen:
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
Wie kann ich bei Verwendung der App Service-Authentifizierung lokal debuggen?
Da die App Service-Authentifizierung ein Azure-Feature ist, funktioniert der Code in diesem Lernprogramm nicht in Ihrer lokalen Umgebung. Im Gegensatz zu einer app, die in Azure ausgeführt wird, profitiert Ihr lokaler Code nicht von der Middleware für die App Service-Authentifizierung. Sie können die folgenden Alternativen für das lokale Debuggen verwenden:
- Stellen Sie eine Verbindung mit der SQL-Datenbank aus Ihrer lokalen Umgebung mit Authentifizierung her
Active Directory Interactive. Dieser Authentifizierungsfluss meldet sich nicht beim Benutzer selbst an, stellt jedoch eine Verbindung mit der Back-End-Datenbank mit dem angemeldeten Benutzer her, damit Sie die Datenbankautorisierung lokal testen können. - Kopieren Sie das Zugriffstoken manuell anstelle des
X-MS-TOKEN-AAD-ACCESS-TOKENAnforderungsheaders in Ihren Code. - Wenn Sie die Bereitstellung über Visual Studio durchführen, verwenden Sie Remotedebuggen für Ihre App Service-App.
Was passiert, wenn Zugriffstoken ablaufen?
Das Zugriffstoken läuft nach einiger Zeit ab. Informationen darüber, wie Sie Zugriffstoken aktualisieren können, ohne dass sich Benutzer erneut bei Ihrer App authentifizieren müssen, finden Sie unter Identitätsanbietertoken aktualisieren.
Verwandte Inhalte
- Tutorial: Verbindungsherstellung mit Azure-Datenbanken über App Service ohne Geheimnisse mithilfe einer verwalteten Identität
- Tutorial: Zugreifen auf Microsoft Graph über eine geschützte .NET-App als App
- Tutorial: Isolieren der Back-End-Kommunikation mit Virtual Network-Integration
- Zuordnen eines vorhandenen benutzerdefinierten DNS-Namens zu Azure App Service