Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym samouczku pokazano, jak połączyć aplikację usługi Azure App Service z bazą danych Azure SQL Database zaplecza, personifikując zalogowanego użytkownika, nazywanego również przepływem w imieniu. Aby skonfigurować ten przepływ, włącz wbudowane uwierzytelnianie usługi App Service przy użyciu dostawcy tożsamości Firmy Microsoft Entra.
Ta metoda łączności jest bardziej zaawansowana niż podejście do tożsamości zarządzanej w artykule Samouczek: uzyskiwanie dostępu do danych przy użyciu tożsamości zarządzanej i ma następujące zalety w scenariuszach przedsiębiorstwa:
- Eliminuje wpisy tajne połączeń z usługami zaplecza, podobnie jak podejście do tożsamości zarządzanej.
- Zapewnia zapleczu bazę danych lub inne usługi platformy Azure większą kontrolę nad tym, ile dostępu ma udzielić komu.
- Umożliwia aplikacji dostosowanie prezentacji danych do zalogowanego użytkownika.
W tym samouczku dodasz uwierzytelnianie microsoft Entra do aplikacji internetowej platformy .NET, która ma zaplecze usługi Azure SQL Database. Uczysz się, jak:
- Włącz uwierzytelnianie entra firmy Microsoft dla usługi Azure SQL Database.
- Wyłącz inne opcje uwierzytelniania usługi SQL Database.
- Dodaj identyfikator Entra firmy Microsoft jako dostawcę tożsamości dla aplikacji.
- Skonfiguruj uprawnienie personifikacji użytkownika usługi SQL Database.
- Skonfiguruj usługę App Service w celu zapewnienia użytecznego tokenu dostępu dla usługi SQL Database.
- Uzyskaj dostęp do bazy danych Azure SQL Database w imieniu zalogowanego użytkownika firmy Microsoft Entra.
Po ukończeniu samouczka aplikacja bezpiecznie łączy się z usługą SQL Database w imieniu zalogowanego użytkownika.
Uwaga
- Identyfikator Entra firmy Microsoft nie jest obsługiwany w przypadku lokalnego programu SQL Server.
- Uwierzytelnianie firmy Microsoft Entra różni się od zintegrowanego uwierzytelniania systemu Windows w lokalnych usługach Active Directory Domain Services (DS). Usługi AD DS i Microsoft Entra ID używają zupełnie różnych protokołów uwierzytelniania. Aby uzyskać więcej informacji, zobacz dokumentację usług Microsoft Entra Domain Services.
Wymagania wstępne
Mieć dostęp do dzierżawy entra firmy Microsoft wypełnionej użytkownikami i grupami.
Ukończ samouczek w temacie Samouczek: tworzenie aplikacji ASP.NET Core i SQL Database w usłudze Azure App Service oraz używanie ukończonej aplikacji na potrzeby tego samouczka.
Możesz też dostosować kroki i użyć własnej aplikacji .NET z usługą SQL Database. Kroki opisane w tym samouczku obsługują następujące wersje platformy .NET:
- .NET Framework 4.8 lub nowszy
- .NET 6.0 i nowsze
Zaloguj się do usługi Azure Cloud Shell lub przygotuj środowisko do korzystania z interfejsu wiersza polecenia platformy Azure.
Użyj środowiska Bash w Azure Cloud Shell. Aby uzyskać więcej informacji, zobacz Get started with Azure Cloud Shell.
Jeśli wolisz uruchamiać polecenia referencyjne interfejsu wiersza polecenia lokalnie, zainstaluj Azure CLI. Jeśli korzystasz z systemu Windows lub macOS, rozważ uruchomienie Azure CLI w kontenerze Docker. Aby uzyskać więcej informacji, zobacz Jak uruchomić Azure CLI w kontenerze Docker.
Jeśli korzystasz z instalacji lokalnej, zaloguj się do Azure CLI za pomocą polecenia az login. Aby zakończyć proces uwierzytelniania, wykonaj kroki wyświetlane na Twoim terminalu. Aby uzyskać inne opcje logowania, zobacz Uwierzytelnianie na platformie Azure przy użyciu interfejsu wiersza polecenia platformy Azure.
Gdy zostaniesz o to poproszony/a, zainstaluj rozszerzenie Azure CLI przy pierwszym użyciu. Aby uzyskać więcej informacji na temat rozszerzeń, zobacz Używanie rozszerzeń i zarządzanie nimi za pomocą interfejsu wiersza polecenia platformy Azure.
Uruchom az version, aby sprawdzić zainstalowaną wersję i biblioteki zależne. Aby zaktualizować do najnowszej wersji, uruchom az upgrade.
1. Konfigurowanie serwera bazy danych przy użyciu uwierzytelniania firmy Microsoft
Włącz uwierzytelnianie microsoft Entra w bazie danych Azure SQL Database, przypisując użytkownika Microsoft Entra jako administratora serwera Azure SQL. Administrator firmy Microsoft Entra musi być użytkownikiem utworzonym, zaimportowanym, zsynchronizowanym lub zaproszonym do identyfikatora Entra firmy Microsoft. Użytkownik Microsoft Entra może nie być taki sam jak użytkownik konta Microsoft dla subskrypcji platformy Azure.
Aby dodać użytkownika Microsoft Entra ID jako administratora serwera Azure SQL, uruchom następujące polecenia interfejsu wiersza polecenia platformy Azure.
Użyj
az ad user listparametrudisplay-name,filterlubupn, aby uzyskać identyfikator obiektu dla użytkownika Microsoft Entra ID, który chcesz utworzyć administratora. Na przykład następujące polecenie wyświetla informacje dla użytkownika identyfikatora entra firmy Microsoft zdisplay-namenazwą Lastname.az ad user list --display-name "Firstname Lastname"idSkopiuj wartość z danych wyjściowych do użycia w następnym kroku.Napiwek
Możesz uruchomić
az ad user listautonomiczne polecenie , aby wyświetlić informacje dla wszystkich użytkowników w katalogu Microsoft Entra.Dodaj użytkownika Microsoft Entra ID jako administratora na serwerze Azure SQL server przy użyciu
az sql server ad-admin createparametruobject-id. W poniższym poleceniu zastąp<group-name>ciąg nazwą grupy zasobów serwera z<server-name>nazwą serwera minus sufiksem.database.windows.neti<entra-id>iddanymi wyjściowymi z poprzedniegoaz ad user listpolecenia.az sql server ad-admin create --resource-group <group-name> --server-name <server-name> --display-name ADMIN --object-id <entra-id>Ogranicz uwierzytelnianie serwera bazy danych tylko do uwierzytelniania entra firmy Microsoft. Ten krok wyłącza uwierzytelnianie za pomocą nazwy użytkownika i hasła SQL.
az sql server ad-only-auth enable --resource-group <group-name> --name <server-name>
- Aby uzyskać więcej informacji na temat tworzenia użytkownika entra firmy Microsoft, zobacz Dodawanie lub usuwanie użytkowników przy użyciu identyfikatora Entra firmy Microsoft.
- Aby uzyskać więcej informacji na temat dozwolonych użytkowników usługi Microsoft Entra dla usługi SQL Database, zobacz Microsoft Entra features and limitations in SQL Database (Funkcje i ograniczenia firmy Microsoft w usłudze SQL Database).
- Aby uzyskać więcej informacji na temat dodawania administratora programu Azure SQL Server, zobacz Provision a Microsoft Entra administrator for your server (Aprowizuj administratora usługi Microsoft Entra dla serwera).
2. Włączanie uwierzytelniania identyfikatora Entra firmy Microsoft dla aplikacji
Dodaj identyfikator Entra firmy Microsoft jako dostawcę tożsamości dla aplikacji. Aby uzyskać więcej informacji, zobacz Configure Microsoft Entra authentication for your App Services application (Konfigurowanie uwierzytelniania entra firmy Microsoft dla aplikacji usługi App Services).
Na stronie witryny Azure Portal dla aplikacji wybierz pozycję Uwierzytelnianie w obszarze Ustawienia w menu nawigacji po lewej stronie.
Na stronie Uwierzytelnianie wybierz pozycję Dodaj dostawcę tożsamości lub wybierz pozycję Dodaj dostawcę w sekcji Dostawca tożsamości .
Na stronie Dodawanie dostawcy tożsamości wybierz pozycję Microsoft jako dostawca.
W obszarze Wygaśnięcie wpisu tajnego klienta wybierz jedną z opcji listy rozwijanej, takich jak Zalecane: 180 dni.
Zachowaj wszystkie ustawienia domyślne i wybierz pozycję Dodaj.
Uwaga
Jeśli ponownie skonfigurujesz ustawienia uwierzytelniania aplikacji, tokeny w magazynie tokenów mogą nie być ponownie generowane z nowych ustawień. Aby upewnić się, że tokeny są ponownie generowane, wyloguj się i zaloguj się ponownie do aplikacji. Prostą metodą jest użycie przeglądarki w trybie prywatnym. Zamknij i otwórz ponownie przeglądarkę w trybie prywatnym po zmianie ustawień w aplikacjach.
3. Konfigurowanie personifikacji użytkownika usługi SQL Database
Udziel aplikacji uprawnień dostępu do usługi SQL Database w imieniu zalogowanego użytkownika firmy Microsoft Entra.
Na stronie Uwierzytelnianie aplikacji wybierz nazwę aplikacji w obszarze Dostawca tożsamości.
Zostanie otwarta strona rejestracji aplikacji. Ta rejestracja została wygenerowana automatycznie po dodaniu dostawcy firmy Microsoft Entra.
Wybierz pozycję Uprawnienia interfejsu API w obszarze Zarządzaj w menu nawigacji po lewej stronie.
Na stronie Uprawnienia interfejsu API wybierz pozycję Dodaj uprawnienie.
Na ekranie Żądanie uprawnień interfejsu API wybierz kartę Interfejsy API używane przez moją organizację .
Wprowadź wartość Azure SQL Database w polu wyszukiwania i wybierz wynik.
W obszarze Jakiego typu uprawnienia wymaga aplikacja, wybierz pozycję Uprawnienia delegowane, a następnie zaznacz pole wyboru obok pozycji user_impersonation, a następnie wybierz pozycję Dodaj uprawnienia.
Rejestracja aplikacji w usłudze Microsoft Entra ma teraz wymagane uprawnienia do nawiązywania połączenia z usługą SQL Database przez personifikację zalogowanego użytkownika.
4. Konfigurowanie usługi App Service w celu zwrócenia tokenu dostępu do użytku
Aby skonfigurować aplikację w celu zapewnienia użytecznego tokenu dostępu dla usługi SQL Database, należy dodać https://database.windows.net/user_impersonation go jako element scope do dostawcy loginParametersMicrosoft Entra aplikacji. Następujące polecenie dodaje loginParameters właściwość z zakresami niestandardowymi do ustawień dostawcy login tożsamości Firmy Microsoft Entra.
W żądanych zakresach usługa App Service domyślnie żąda openidzakresów , profilei email . Zakres offline_access jest uwzględniony, aby można było odświeżyć tokeny. Aby uzyskać więcej informacji, zobacz Zakresy openID Connect.
Zakres https://database.windows.net/user_impersonation odnosi się do usługi Azure SQL Database i udostępnia token internetowy JSON (JWT), który określa usługę SQL Database jako adresata tokenu. To polecenie używa jq do przetwarzania JSON, które jest już zainstalowane w usłudze 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"
Napiwek
Aby skonfigurować wymagany zakres przy użyciu interfejsu internetowego zamiast interfejsu wiersza polecenia platformy Azure, użyj polecenia Configure the Microsoft Entra provider to supply refresh tokens (Konfigurowanie dostawcy usługi Microsoft Entra), aby podać tokeny odświeżania, dodając https://database.windows.net/user_impersonation do żądanych zakresów.
Aplikacja jest teraz skonfigurowana do generowania tokenu dostępu akceptowanego przez usługę SQL Database.
Uwaga
Tokeny dostępu wygasają po pewnym czasie. Aby uzyskać informacje na temat odświeżania tokenów dostępu bez konieczności ponownego uwierzytelniania użytkowników przy użyciu aplikacji, zobacz Odświeżanie tokenów uwierzytelniania.
5. Użyj tokenu dostępu w kodzie aplikacji
Zaktualizuj kod aplikacji, aby dodać token dostępu dostarczony przez uwierzytelnianie usługi App Service do obiektu połączenia.
Uwaga
Ten kod nie działa lokalnie. Aby uzyskać więcej informacji i alternatyw dla debugowania lokalnego, zobacz Debugowanie lokalnie podczas korzystania z uwierzytelniania usługi App Service.
DbContextW obiekcie w DatabaseContext.cs lub innym pliku, który konfiguruje kontekst bazy danych, zmień domyślny konstruktor, aby dodać token dostępu Microsoft Entra ID do obiektu połączenia.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"]; }Jeśli masz parametry połączenia o nazwie
defaultConnectionw usłudze App Service, które używają uwierzytelniania SQL z nazwą użytkownika i hasłem, użyj następującego polecenia, aby usunąć wpisy tajne połączenia. Zastąp<group-name>wartości , ,<app-name><db-server-name>i<db-name>.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. Publikowanie zmian
Jeśli w przeglądarce użyto programu Visual Studio Code w celu wprowadzenia zmian w kodzie w rozwidleniu usługi GitHub, wybierz pozycję Kontrola źródła z menu po lewej stronie. Wprowadź komunikat zatwierdzenia, taki jak OBO connect i wybierz pozycję Zatwierdź.
Zatwierdzenie wyzwala wdrożenie funkcji GitHub Actions w usłudze App Service. Poczekaj kilka minut na zakończenie wdrożenia.
Możesz również opublikować zmiany w powłoce Git Bash przy użyciu następujących poleceń:
git commit -am "configure managed identity"
git push azure main
Jeśli kod znajduje się w programie Visual Studio:
Kliknij prawym przyciskiem myszy projekt w Eksploratorze rozwiązań i wybierz pozycję Publikuj.
Na stronie Publikowanie wybierz pozycję Publikuj.
Gdy nowa strona aplikacji wyświetli Aplikację, aplikacja łączy się z bazą danych Azure SQL Database w imieniu zalogowanego użytkownika firmy Microsoft Entra. Aplikacja powinna być używana i edytowana w zwykły sposób.
7. Czyszczenie zasobów
W poprzednich krokach utworzono zasoby platformy Azure w grupie zasobów. Jeśli te zasoby nie są już potrzebne, usuń grupę zasobów, uruchamiając następujące polecenie:
az group delete --name <group-name>
Uruchomienie tego polecenia może zająć trochę czasu.
Często zadawane pytania
- Dlaczego otrzymuję błąd "Logowanie nie powiodło się dla użytkownika "<podmiot zabezpieczeń> zidentyfikowanych przez token"?
- Jak mogę dodać innych użytkowników lub grup firmy Microsoft w usłudze Azure SQL Database?
- Jak mogę debugować lokalnie podczas korzystania z uwierzytelniania usługi App Service?
- Co się stanie po wygaśnięciu tokenów dostępu?
Dlaczego otrzymuję błąd "Logowanie nie powiodło się dla użytkownika "<podmiot zabezpieczeń> zidentyfikowanych przez token"?
Najczęstsze przyczyny błędu Login failed for user '<token-identified principal>' to:
- Uwierzytelnianie entra firmy Microsoft nie zostało skonfigurowane dla bazy danych Azure SQL Database. Zobacz Konfigurowanie serwera bazy danych przy użyciu uwierzytelniania firmy Microsoft Entra.
- Brak prawidłowego tokenu w nagłówku
X-MS-TOKEN-AAD-ACCESS-TOKENżądania. Ten kod nie działa w środowiskach lokalnych. Aby uzyskać więcej informacji i alternatyw, zobacz Debugowanie lokalnie podczas korzystania z uwierzytelniania usługi App Service. - Użytkownik nie ma uprawnień do nawiązywania połączenia z bazą danych. Aby dodać użytkowników i uprawnienia, zobacz Dodawanie innych użytkowników lub grup firmy Microsoft w usłudze Azure SQL Database.
Jak mogę dodać innych użytkowników lub grup firmy Microsoft w usłudze Azure SQL Database?
Aby dodać więcej użytkowników lub grup, połącz się z serwerem bazy danych przy użyciu narzędzia sqlcmd lub programu SQL Server Management Studio (SSMS) i utwórz zawartych użytkowników bazy danych zamapowanych na tożsamości firmy Microsoft Entra.
Poniższy przykład Transact-SQL dodaje tożsamość firmy Microsoft Entra do programu SQL Server i udostępnia tożsamość niektórych ról bazy danych:
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
Jak mogę debugować lokalnie podczas korzystania z uwierzytelniania usługi App Service?
Ponieważ uwierzytelnianie usługi App Service jest funkcją platformy Azure, kod w tym samouczku nie działa w środowisku lokalnym. W przeciwieństwie do aplikacji działającej na platformie Azure kod lokalny nie korzysta z oprogramowania pośredniczącego uwierzytelniania usługi App Service. Do debugowania lokalnego można użyć następujących alternatyw:
- Połącz się z usługą SQL Database z poziomu środowiska lokalnego przy użyciu
Active Directory Interactiveuwierzytelniania. Ten przepływ uwierzytelniania nie loguje się sam użytkownik, ale łączy się z bazą danych zaplecza przy użyciu zalogowanego użytkownika, aby można było przetestować autoryzację bazy danych lokalnie. - Ręcznie skopiuj token dostępu do kodu zamiast nagłówka
X-MS-TOKEN-AAD-ACCESS-TOKENżądania. - W przypadku wdrażania z poziomu programu Visual Studio użyj zdalnego debugowania aplikacji usługi App Service.
Co się stanie po wygaśnięciu tokenów dostępu?
Token dostępu wygasa po pewnym czasie. Aby uzyskać informacje na temat odświeżania tokenów dostępu bez konieczności ponownego uwierzytelniania użytkowników w aplikacji, zobacz Odświeżanie tokenów dostawców tożsamości.
Treści powiązane
- Samouczek: nawiązywanie połączenia z bazami danych platformy Azure z usługi App Service bez wpisów tajnych przy użyciu tożsamości zarządzanej
- Samouczek: uzyskiwanie dostępu do programu Microsoft Graph z zabezpieczonej aplikacji .NET jako aplikacji
- Samouczek: izolowanie komunikacji z zapleczem przy użyciu integracji z siecią wirtualną
- Przypisz istniejącą niestandardową nazwę DNS do Azure App Service