Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Aplikacje hostowane poza platformą Azure, takie jak lokalne lub w centrum danych innej firmy, powinny używać jednostki usługi aplikacji za pośrednictwem identyfikatora Entra firmy Microsoft do uwierzytelniania w usługach platformy Azure. W poniższych sekcjach nauczysz się:
- Jak zarejestrować aplikację w usłudze Microsoft Entra w celu utworzenia głównej usługi
- Jak przypisać role do uprawnień zakresu
- Jak uwierzytelniać się przy użyciu jednostki usługi z poziomu kodu aplikacji
Użycie dedykowanych jednostek usługi aplikacji umożliwia przestrzeganie zasady najniższych uprawnień podczas uzyskiwania dostępu do zasobów platformy Azure. Uprawnienia są ograniczone do określonych wymagań aplikacji podczas programowania, uniemożliwiając przypadkowy dostęp do zasobów platformy Azure przeznaczonych dla innych aplikacji lub usług. Takie podejście pomaga również uniknąć problemów, gdy aplikacja zostanie przeniesiona do środowiska produkcyjnego, zapewniając, że nie jest ona nadmiernie uprzywilejowana w środowisku deweloperskim.
Dla każdego środowiska hostowanego w aplikacji należy utworzyć inną rejestrację aplikacji. Umożliwia to skonfigurowanie uprawnień określonych zasobów środowiska dla każdej jednostki usługi i upewnienie się, że aplikacja wdrożona w jednym środowisku nie rozmawia z zasobami platformy Azure, które są częścią innego środowiska.
Rejestrowanie aplikacji na platformie Azure
Obiekty zasadniczych usług aplikacji są tworzone za pośrednictwem rejestracji aplikacji na platformie Azure przy użyciu Portalu Azure lub interfejsu wiersza polecenia Azure.
Użyj paska wyszukiwania w portalu Azure, aby nawigować do strony Rejestracje aplikacji.
Na stronie Rejestracje aplikacji wybierz opcję + Nowa rejestracja.
Na stronie Rejestrowanie aplikacji:
- W polu Nazwa wprowadź opisową wartość zawierającą nazwę aplikacji i środowisko docelowe.
- Dla obsługiwanych typów kont wybierz Konta tylko w tym katalogu organizacyjnym (tylko klient Microsoft — pojedyncza dzierżawa)lub dowolną opcję najlepiej dopasowaną do Państwa wymagań.
Wybierz pozycję Zarejestruj, aby zarejestrować aplikację i utworzyć jednostkę usługi.
Na stronie rejestracji aplikacji dla Twojej aplikacji, skopiuj identyfikator aplikacji (klienta) oraz identyfikator katalogu (dzierżawy) i wklej je w tymczasowym miejscu przechowywania, aby później użyć ich w konfiguracjach kodu aplikacji.
Wybierz pozycję Dodaj certyfikat lub klucz tajny, aby skonfigurować poświadczenia dla aplikacji.
Na stronie Certyfikaty i sekrety wybierz opcję + Nowy sekret klienta.
W Dodaj wpis tajny klienta panelu wysuwanym, który zostanie otwarty:
- W polu Opis wprowadź wartość Current.
- Dla wartości Wygasa pozostaw domyślną zalecaną wartość 180 dni.
- Wybierz Dodaj, aby dodać tajemnicę.
Na stronie certyfikatów & certyfikatów skopiuj właściwość Value klucza tajnego klienta do użycia w przyszłym kroku.
Notatka
Tajny klucz klienta jest wyświetlany tylko raz po zarejestrowaniu aplikacji. Możesz dodać więcej sekretów klienta bez unieważniając tego sekretu klienta, ale nie ma możliwości ponownego wyświetlenia tej wartości.
Przypisywanie ról do jednostki usługi aplikacji
Następnie określ, jakich ról (uprawnień) potrzebuje twoja aplikacja na temat zasobów i przypisz te role do utworzonej jednostki usługi. Role można przypisywać w zakresie zasobu, grupy zasobów lub subskrypcji. W tym przykładzie pokazano, jak przypisywać role w zakresie grupy zasobów, ponieważ większość aplikacji grupuje wszystkie zasoby platformy Azure w jedną grupę zasobów.
W portalu Azure przejdź do strony Przegląd grupy zasobów zawierającej twoją aplikację.
Wybierz pozycję Kontrola dostępu (IAM) z lewego panelu nawigacyjnego.
Na stronie kontroli dostępu (IAM) wybierz pozycję + Dodaj, a następnie wybierz pozycję Dodaj przypisanie roli z menu rozwijanego. Strona Przypisanie ról zawiera kilka zakładek do konfigurowania i przydzielania ról.
Na karcie Rola użyj pola wyszukiwania, aby zlokalizować rolę, którą chcesz przypisać. Wybierz rolę, a następnie wybierz pozycję Dalej.
Na karcie Członkowie:
- Dla Przypisania dostępu do wartości wybierz Użytkownik, grupa lub jednostka usługi.
- Dla wartości członkowie wybierz pozycję + Wybierz członków, aby otworzyć panel wysuwany Wybierz członków.
- Wyszukaj utworzoną wcześniej jednostkę usługi i wybierz ją z filtrowanych wyników. Wybierz pozycję i naciśnij, aby wybrać grupę i zamknąć panel wysuwany.
- Wybierz pozycję Przejrzyj i przypisz w dolnej części karty członków.
Na karcie Przegląd + przypisz wybierz pozycję Przegląd + przypisz w dolnej części strony.
Ustawianie zmiennych środowiskowych aplikacji
W czasie wykonywania niektóre poświadczenia z biblioteki Azure Identity, takie jak DefaultAzureCredential
, EnvironmentCredential
i ClientSecretCredential
, wyszukują podstawowe informacje o jednostce usługi zgodnie z konwencją w zmiennych środowiskowych. Istnieje wiele sposobów konfigurowania zmiennych środowiskowych podczas pracy z platformą .NET, w zależności od narzędzi i środowiska.
Niezależnie od wybranego podejścia skonfiguruj następujące zmienne środowiskowe dla jednostki usługi:
-
AZURE_CLIENT_ID
: służy do identyfikowania zarejestrowanej aplikacji na platformie Azure. -
AZURE_TENANT_ID
: Identyfikator dzierżawcy Microsoft Entra. -
AZURE_CLIENT_SECRET
: Tajne poświadczenie wygenerowane dla aplikacji.
- programu Visual Studio
- programu Visual Studio Code
- Windows
W programie Visual Studio zmienne środowiskowe można ustawić w pliku launchsettings.json
w folderze Properties
projektu. Te wartości są pobierane automatycznie po uruchomieniu aplikacji. Jednak te konfiguracje nie są przesyłane z aplikacją podczas wdrażania, dlatego należy skonfigurować zmienne środowiskowe w docelowym środowisku hostingu.
"profiles": {
"SampleProject": {
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": true,
"applicationUrl": "https://localhost:7177;http://localhost:5177",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development",
"AZURE_CLIENT_ID": "<your-client-id>",
"AZURE_TENANT_ID":"<your-tenant-id>",
"AZURE_CLIENT_SECRET": "<your-client-secret>"
}
},
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development",
"AZURE_CLIENT_ID": "<your-client-id>",
"AZURE_TENANT_ID":"<your-tenant-id>",
"AZURE_CLIENT_SECRET": "<your-client-secret>"
}
}
}
Uwierzytelnianie w usługach platformy Azure z aplikacji
Biblioteka Azure Identity udostępnia różne poświadczenia— wdrożenia TokenCredential
dostosowane do obsługi różnych scenariuszy i przepływów uwierzytelniania Microsoft Entra. W krokach z wyprzedzeniem pokazano, jak używać ClientSecretCredential podczas pracy z jednostkami usługi lokalnie i w środowisku produkcyjnym.
Implementowanie kodu
Dodaj pakiet Azure.Identity. W projekcie ASP.NET Core zainstaluj również pakiet Microsoft.Extensions.Azure:
W wybranym terminalu przejdź do katalogu projektu aplikacji i uruchom następujące polecenia:
dotnet add package Azure.Identity
dotnet add package Microsoft.Extensions.Azure
Dostęp do usług platformy Azure jest uzyskiwany przy użyciu wyspecjalizowanych klas klientów z różnych bibliotek klienckich zestawu Azure SDK. Te klasy i własne usługi niestandardowe powinny być zarejestrowane do wstrzykiwania zależności, aby mogły być używane w całej aplikacji. W Program.cs
wykonaj następujące kroki, aby skonfigurować klasę klienta na potrzeby wstrzykiwania zależności i uwierzytelniania opartego na tokenach:
- Uwzględnij
Azure.Identity
iMicrosoft.Extensions.Azure
przestrzenie nazw za pomocąusing
dyrektyw. - Zarejestruj klienta usługi Azure przy użyciu rozszerzającej metody z prefiksem
Add
. - Skonfiguruj
ClientSecretCredential
przy użyciutenantId
,clientId
iclientSecret
. - Przekaż wystąpienie
ClientSecretCredential
do metodyUseCredential
.
builder.Services.AddAzureClients(clientBuilder =>
{
var tenantId = Environment.GetEnvironmentVariable("AZURE_TENANT_ID");
var clientId = Environment.GetEnvironmentVariable("AZURE_CLIENT_ID");
var clientSecret = Environment.GetEnvironmentVariable("AZURE_CLIENT_SECRET");
clientBuilder.AddBlobServiceClient(
new Uri("https://<account-name>.blob.core.windows.net"));
clientBuilder.UseCredential(new ClientSecretCredential(tenantId, clientId, clientSecret));
});
Alternatywą dla metody UseCredential
jest bezpośrednie podanie poświadczenia klientowi usługi.
var tenantId = Environment.GetEnvironmentVariable("AZURE_TENANT_ID");
var clientId = Environment.GetEnvironmentVariable("AZURE_CLIENT_ID");
var clientSecret = Environment.GetEnvironmentVariable("AZURE_CLIENT_SECRET");
builder.Services.AddSingleton<BlobServiceClient>(_ =>
new BlobServiceClient(
new Uri("https://<account-name>.blob.core.windows.net"),
new ClientSecretCredential(tenantId, clientId, clientSecret)));