Uwierzytelnianie aplikacji JavaScript w usługach platformy Azure podczas programowania lokalnego przy użyciu kont deweloperów
Artykuł
Podczas tworzenia aplikacji w chmurze deweloperzy muszą debugować i testować aplikacje na lokalnej stacji roboczej. Gdy aplikacja jest uruchamiana na stacji roboczej dewelopera podczas programowania lokalnego, nadal musi uwierzytelniać się w dowolnych usługach platformy Azure używanych przez aplikację. W tym artykule opisano, jak używać poświadczeń platformy Azure dewelopera do uwierzytelniania aplikacji na platformie Azure podczas programowania lokalnego.
Aby aplikacja uwierzytelniła się na platformie Azure podczas programowania lokalnego przy użyciu poświadczeń platformy Azure dla deweloperów, deweloper musi zalogować się do platformy Azure z poziomu rozszerzenia narzędzi platformy Azure programu Visual Studio Code, interfejsu wiersza polecenia platformy Azure lub programu Azure PowerShell. Zestaw Azure SDK dla języka JavaScript może wykryć, że deweloper jest zalogowany z jednego z tych narzędzi, a następnie uzyskuje niezbędne poświadczenia z pamięci podręcznej poświadczeń w celu uwierzytelnienia aplikacji na platformie Azure jako zalogowanego użytkownika.
To podejście jest najłatwiejsze do skonfigurowania dla zespołu deweloperów, ponieważ korzysta z istniejących kont platformy Azure deweloperów. Jednak konto dewelopera prawdopodobnie będzie mieć więcej uprawnień niż wymagane przez aplikację, w związku z tym przekroczenie uprawnień uruchamianych przez aplikację w środowisku produkcyjnym. Alternatywnie można utworzyć jednostki usługi aplikacji do użycia podczas tworzenia lokalnego, które mogą być ograniczone tylko do dostępu wymaganego przez aplikację.
1 — Tworzenie grupy Microsoft Entra na potrzeby programowania lokalnego
Ponieważ prawie zawsze istnieje wiele deweloperów, którzy pracują nad aplikacją, zaleca się najpierw utworzenie grupy Entra firmy Microsoft w celu hermetyzacji ról (uprawnień) wymaganych przez aplikację w środowisku lokalnym. Oferuje to następujące korzyści.
Każdy deweloper ma przypisane te same role, ponieważ role są przypisywane na poziomie grupy.
Jeśli dla aplikacji jest potrzebna nowa rola, należy ją dodać tylko do grupy Microsoft Entra dla aplikacji.
Jeśli nowy deweloper dołącza do zespołu, po prostu musi zostać dodany do właściwej grupy Firmy Microsoft Entra, aby uzyskać odpowiednie uprawnienia do pracy nad aplikacją.
Jeśli masz istniejącą grupę Microsoft Entra dla zespołu deweloperów, możesz użyć tej grupy. W przeciwnym razie wykonaj następujące kroki, aby utworzyć grupę firmy Microsoft Entra.
Przejdź do strony Microsoft Entra ID w witrynie Azure Portal, wpisując ciąg Microsoft Entra ID w polu wyszukiwania w górnej części strony, a następnie wybierając pozycję Microsoft Entra ID w obszarze usług.
Na stronie Microsoft Entra ID wybierz pozycję Grupy z menu po lewej stronie.
Na stronie Wszystkie grupy wybierz pozycję Nowa grupa.
Na stronie Nowa grupa:
Typ grupy → Zabezpieczenia.
Nazwa grupy → nazwa grupy zabezpieczeń, zazwyczaj utworzona na podstawie nazwy aplikacji. Warto również uwzględnić ciąg, taki jak local-dev w nazwie grupy, aby wskazać cel grupy.
Opis grupy → Opis celu grupy.
Wybierz link Brak wybranych członków w obszarze Członkowie, aby dodać członków do grupy.
W oknie dialogowym Dodawanie członków:
Użyj pola wyszukiwania, aby filtrować listę nazw użytkowników na liście.
Wybierz co najmniej jednego użytkownika na potrzeby programowania lokalnego dla tej aplikacji. Po wybraniu obiektu obiekt zostanie przeniesiony do listy Wybrane elementy w dolnej części okna dialogowego.
Po zakończeniu wybierz przycisk Wybierz .
Po powrocie na stronę Nowa grupa wybierz pozycję Utwórz , aby utworzyć grupę.
Grupa zostanie utworzona i nastąpi powrót do strony Wszystkie grupy . Wyświetlenie grupy może potrwać do 30 sekund i może być konieczne odświeżenie strony z powodu buforowania w witrynie Azure Portal.
Polecenie az ad group create służy do tworzenia grup w usłudze Microsoft Entra ID. Parametry --display-name i --main-nickname są wymagane. Nazwa nadana grupie powinna być oparta na nazwie aplikacji. Warto również uwzględnić frazę taką jak "local-dev" w nazwie grupy, aby wskazać cel grupy.
az ad group create \
--display-name MyDisplay \
--mail-nickname MyDisplay \
--description <group-description>
Aby dodać członków do grupy, potrzebny będzie identyfikator obiektu użytkownika platformy Azure. Użyj listy az ad user list, aby wyświetlić listę dostępnych jednostek usługi. Polecenie --filter parametru akceptuje filtry stylu OData i może służyć do filtrowania listy w nazwie wyświetlanej użytkownika, jak pokazano. Parametr --query zwraca określone kolumny.
az ad user list \
--filter "startswith(displayName, 'Bob')" \
--query "[].{objectId:objectId, displayName:displayName}" \
--output table
az ad group member add \
--group <group-name> \
--member-id <object-id>
2 — Przypisywanie ról do grupy Microsoft Entra
Następnie należy określić, jakich ról (uprawnień) potrzebuje twoja aplikacja na temat zasobów i przypisać te role do aplikacji. W tym przykładzie role są przypisywane do grupy Microsoft Entra utworzonej w kroku 1. Role mogą być przypisywane do roli 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.
Znajdź grupę zasobów dla aplikacji, wyszukując nazwę grupy zasobów przy użyciu pola wyszukiwania w górnej części witryny Azure Portal.
Przejdź do grupy zasobów, wybierając nazwę grupy zasobów pod nagłówkiem Grupy zasobów w oknie dialogowym.
Na stronie grupy zasobów wybierz pozycję Kontrola dostępu (Zarządzanie dostępem i tożsamościami) z menu po lewej stronie.
Na stronie Kontrola dostępu (Zarządzanie dostępem i tożsamościami):
Wybierz kartę Przypisania roli.
Wybierz pozycję + Dodaj z górnego menu, a następnie pozycję Dodaj przypisanie roli z wyświetlonego menu rozwijanego.
Strona Dodawanie przypisania roli zawiera listę wszystkich ról, które można przypisać dla grupy zasobów.
Użyj pola wyszukiwania, aby przefiltrować listę do bardziej możliwego do zarządzania rozmiaru. W tym przykładzie pokazano, jak filtrować role obiektów blob usługi Storage.
Wybierz rolę, którą chcesz przypisać.
Wybierz przycisk Dalej , aby przejść do następnego ekranu.
Następna strona Dodawanie przypisania roli umożliwia określenie, do którego użytkownika ma zostać przypisana rola.
Wybierz pozycję Użytkownik, grupa lub jednostka usługi w obszarze Przypisz dostęp do.
Wybierz pozycję + Wybierz członków w obszarze Członkowie
Zostanie otwarte okno dialogowe po prawej stronie witryny Azure Portal.
W oknie dialogowym Wybieranie członków:
Pole tekstowe Wybierz może służyć do filtrowania listy użytkowników i grup w ramach subskrypcji. W razie potrzeby wpisz kilka pierwszych znaków lokalnej grupy deweloperów firmy Microsoft Entra utworzonej dla aplikacji.
Wybierz lokalną grupę deweloperów firmy Microsoft skojarzona z twoją aplikacją.
Wybierz pozycję Wybierz w dolnej części okna dialogowego, aby kontynuować.
Grupa Microsoft Entra jest wyświetlana jako wybrana na ekranie Dodawanie przypisania roli.
Wybierz pozycję Przejrzyj i przypisz , aby przejść do ostatniej strony, a następnie ponownie przejrzyj i przypisz, aby ukończyć proces.
az role definition list --query "sort_by([].{roleName:roleName, description:description}, &roleName)" --output table
Aby na przykład umożliwić jednostce usługi aplikacji odczytywanie, zapisywanie i usuwanie dostępu do kontenerów obiektów blob usługi Azure Storage i danych do wszystkich kont magazynu w grupie zasobów msdocs-sdk-auth-example , należy przypisać jednostkę usługi aplikacji do roli Współautor danych obiektu blob usługi Storage przy użyciu następującego polecenia.
az role assignment create --assignee "aaaaaaaa-bbbb-cccc-7777-888888888888" \
--scope /subscriptions/"Storage Blob Data Subscriber" \
--role "Storage Blob Data Contributor" \
--resource-group "msdocs-sdk-auth-example"
4 — Implementowanie wartości domyślnejAzureCredential w aplikacji
Aby uwierzytelnić obiekty klienta zestawu Azure SDK na platformie Azure, aplikacja powinna używać DefaultAzureCredential klasy z @azure/identity pakietu. W tym scenariuszu sekwencyjnie sprawdzi, DefaultAzureCredential czy deweloper zalogował się do platformy Azure przy użyciu rozszerzenia narzędzi platformy Azure programu VS Code, interfejsu wiersza polecenia platformy Azure lub programu Azure PowerShell. Jeśli deweloper jest zalogowany na platformie Azure przy użyciu dowolnego z tych narzędzi, poświadczenia używane do logowania się do narzędzia będą używane przez aplikację do uwierzytelniania na platformie Azure za pomocą polecenia .
Następnie w przypadku dowolnego kodu JavaScript, który tworzy obiekt klienta zestawu Azure SDK w aplikacji, należy wykonać następujące czynności:
Zaimportuj klasę DefaultAzureCredential z modułu @azure/identity .
Utwórz DefaultAzureCredential obiekt.
Przekaż obiekt do konstruktora DefaultAzureCredential obiektu klienta zestawu Azure SDK.
Przykład jest pokazany w następującym segmencie kodu.
import { BlobServiceClient } from '@azure/storage-blob';
import { DefaultAzureCredential } from '@azure/identity';
// Acquire a credential object
const tokenCredential = DefaultAzureCredential();
const blobServiceClient = BlobServiceClient(
`https://${accountName}.blob.core.windows.net`,
tokenCredential
);
DefaultAzureCredential Automatycznie wykryje mechanizm uwierzytelniania skonfigurowany dla aplikacji i uzyska niezbędne tokeny do uwierzytelniania aplikacji na platformie Azure. Jeśli aplikacja korzysta z więcej niż jednego klienta zestawu SDK, ten sam obiekt poświadczeń może być używany z każdym obiektem klienta zestawu SDK.