Udostępnij za pośrednictwem


Jak uwierzytelniać aplikacje JavaScript hostowane na platformie Azure w zasobach platformy Azure przy użyciu biblioteki tożsamości platformy Azure

Gdy aplikacja jest hostowana na platformie Azure (przy użyciu usługi, takiej jak Azure App Service, Azure Functions lub Azure Container Apps), możesz użyć tożsamości zarządzanej w celu bezpiecznego uwierzytelniania aplikacji w zasobach platformy Azure.

Tożsamość zarządzana zapewnia tożsamość aplikacji, umożliwiając jej łączenie się z innymi zasobami platformy Azure bez konieczności używania wpisu tajnego (na przykład parametrów połączenia lub klucza). Wewnętrznie platforma Azure rozpoznaje tożsamość aplikacji i wie, do których zasobów aplikacja ma uprawnienia dostępu. Azure używa tych informacji do automatycznego uzyskiwania tokenów Microsoft Entra dla aplikacji, umożliwiając jej łączenie się z innymi zasobami Azure bez konieczności zarządzania tajnymi danymi uwierzytelniania (tworzenia lub odnawiania).

Typy tożsamości zarządzanych

Istnieją dwa typy tożsamości zarządzanych:

  • Tożsamości zarządzane przypisane przez system — pojedynczy zasób platformy Azure
  • Tożsamości zarządzane przypisane przez użytkownika — wiele zasobów platformy Azure

W tym artykule opisano kroki włączania i używania tożsamości zarządzanej przypisanej przez system dla aplikacji. Jeśli musisz użyć tożsamości zarządzanej przypisanej przez użytkownika, zobacz artykuł Zarządzanie tożsamościami zarządzanymi przypisanymi przez użytkownika, aby zobaczyć, jak utworzyć tożsamość zarządzaną przypisaną przez użytkownika.

Tożsamości zarządzane przypisane przez system dla pojedynczego zasobu

Tożsamości zarządzane przypisane przez system są udostępniane i powiązane bezpośrednio z zasobem platformy Azure. Po włączeniu tożsamości zarządzanej w zasobie platformy Azure uzyskasz tożsamość zarządzaną przypisaną przez system dla tego zasobu. Tożsamość zarządzana jest powiązana z cyklem życia zasobu platformy Azure. Po usunięciu zasobu platforma Azure automatycznie usunie tożsamość. Ponieważ wszystko, co musisz zrobić, to włączenie tożsamości zarządzanej dla zasobu Azure, który hostuje twój kod, ten typ tożsamości jest najprostszym typem tożsamości zarządzanej do zastosowania.

Tożsamości zarządzane przypisane przez użytkownika dla wielu zasobów

Tożsamość zarządzana przypisana przez użytkownika jest autonomicznym zasobem platformy Azure. Ten typ tożsamości jest najczęściej używany, gdy rozwiązanie ma wiele obciążeń uruchamianych w wielu zasobach platformy Azure, które muszą współdzielić tę samą tożsamość i te same uprawnienia. Załóżmy na przykład, że twoje rozwiązanie zawiera aplikacje, które działają w wielu instancjach usługi "App Service" i maszyn wirtualnych. Wszystkie aplikacje muszą mieć dostęp do tego samego zestawu zasobów platformy Azure. Tworzenie i używanie tożsamości zarządzanej przypisanej przez użytkownika w tych zasobach jest najlepszym wyborem projektowym.

1 — Włącz systemowo przypisaną tożsamość zarządzaną w aplikacji hostowanej

Pierwszym krokiem jest włączenie tożsamości zarządzanej w zasobie platformy Azure hostowania aplikacji. Jeśli na przykład hostujesz aplikację Express.js przy użyciu usługi Azure App Service, musisz włączyć tożsamość zarządzaną dla tej aplikacji internetowej usługi App Service. Jeśli używasz maszyny wirtualnej do hostowania aplikacji, włącz maszynę wirtualną do korzystania z tożsamości zarządzanej.

Tożsamość zarządzaną można włączyć dla zasobu platformy Azure przy użyciu witryny Azure Portal lub interfejsu wiersza polecenia platformy Azure.

Instrukcje Zrzut ekranu
Przejdź do zasobu, który hostuje kod aplikacji w witrynie Azure Portal.

Możesz na przykład wpisać nazwę zasobu w polu wyszukiwania w górnej części strony i przejść do niego, wybierając ją w oknie dialogowym.
Zrzut ekranu przedstawiający sposób używania górnego paska wyszukiwania w witrynie Azure Portal do lokalizowania i przechodzenia do zasobu na platformie Azure.
Na stronie zasobu wybierz element menu Tożsamość z menu po lewej stronie.

Wszystkie zasoby platformy Azure obsługujące tożsamość zarządzaną będą miały element menu Tożsamość , mimo że układ menu może się nieco różnić.
Zrzut ekranu przedstawiający lokalizację elementu menu Tożsamość w menu po lewej stronie dla zasobu platformy Azure.
Na stronie Tożsamość:
  1. Zmień suwak Stan na Włączone.
  2. Wybierz pozycję Zapisz.
Okno dialogowe potwierdzenia weryfikuje, czy chcesz włączyć tożsamość zarządzaną dla usługi. Odpowiedz tak , aby włączyć tożsamość zarządzaną dla zasobu platformy Azure.
Zrzut ekranu przedstawiający sposób włączania tożsamości zarządzanej dla zasobu platformy Azure na stronie Tożsamość zasobu.

2 — Przypisywanie ról do tożsamości zarządzanej

Następnie należy określić, jakich ról (uprawnień) potrzebuje twoja aplikacja, i przypisać tożsamość zarządzaną do tych ról na platformie Azure. Tożsamość zarządzana może mieć przypisane role 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.

Instrukcje Zrzut ekranu
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.
Zrzut ekranu przedstawiający sposób używania górnego paska wyszukiwania w witrynie Azure Portal do lokalizowania i przechodzenia do grupy zasobów na platformie Azure.
Na stronie grupy zasobów wybierz pozycję Kontrola dostępu (Zarządzanie dostępem i tożsamościami) z menu po lewej stronie. Zrzut ekranu przedstawiający lokalizację elementu menu Kontrola dostępu (I A M) w menu po lewej stronie grupy zasobów platformy Azure.
Na stronie Kontrola dostępu (Zarządzanie dostępem i tożsamościami):
  1. Wybierz kartę Przypisania roli.
  2. Wybierz pozycję + Dodaj z górnego menu, a następnie pozycję Dodaj przypisanie roli z wyświetlonego menu rozwijanego.
Zrzut ekranu przedstawiający sposób przechodzenia do karty przypisania ról i lokalizacji przycisku używanego do dodawania przypisań ról do grupy zasobów.
Strona Dodawanie przypisania roli zawiera listę wszystkich ról, które można przypisać dla grupy zasobów.
  1. 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.
  2. Wybierz rolę, którą chcesz przypisać.
    Wybierz przycisk Dalej , aby przejść do następnego ekranu.
Zrzut ekranu przedstawiający sposób filtrowania i wybierania przypisań ról do dodania do grupy zasobów.
Następna strona Dodawanie przypisania roli umożliwia określenie, do którego użytkownika ma zostać przypisana rola.
  1. Wybierz pozycję Tożsamość zarządzana w obszarze Przypisz dostęp do.
  2. Wybierz pozycję + Wybierz członków w obszarze Członkowie
Zostanie otwarte okno dialogowe po prawej stronie witryny Azure Portal.
Zrzut ekranu przedstawiający sposób wybierania tożsamości zarządzanej jako typu użytkownika, który ma zostać przypisany do roli (uprawnienia) na stronie dodawania przypisań ról.
W oknie dialogowym Wybieranie tożsamości zarządzanych:
  1. Lista rozwijana Tożsamość zarządzana i Pole tekstowe Wybierz można użyć do filtrowania listy tożsamości zarządzanych w ramach subskrypcji. W tym przykładzie, wybierając pozycję App Service, wyświetlane są tylko tożsamości zarządzane skojarzone z usługą App Service.
  2. Wybierz tożsamość zarządzaną dla zasobu platformy Azure hostowania aplikacji.
Wybierz pozycję Wybierz w dolnej części okna dialogowego, aby kontynuować.
Zrzut ekranu przedstawiający sposób używania okna dialogowego wybierania tożsamości zarządzanych do filtrowania i wybierania tożsamości zarządzanej, do których ma zostać przypisana rola.
Tożsamość zarządzana 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.
Zrzut ekranu przedstawiający ekran dodawania ostatecznego przypisania roli, na którym użytkownik musi wybrać przycisk Przejrzyj i przypisz, aby sfinalizować przypisanie roli.

3 — Implementowanie wartości domyślnejAzureCredential w aplikacji

DefaultAzureCredential automatycznie wykrywa, że tożsamość zarządzana jest używana i używa tożsamości zarządzanej do uwierzytelniania w innych zasobach platformy Azure. Zgodnie z opisem w artykule Azure Identity library for JavaScript authentication overview (Omówienie uwierzytelniania w języku JavaScript) DefaultAzureCredential obsługuje wiele metod uwierzytelniania i określa metodę uwierzytelniania używaną w czasie wykonywania. W ten sposób aplikacja może używać różnych metod uwierzytelniania w różnych środowiskach bez implementowania kodu specyficznego dla środowiska.

Najpierw dodaj pakiet @azure/identity do aplikacji.

npm install @azure/identity

Następnie dla dowolnego kodu JavaScript, który tworzy obiekt klienta zestawu Azure SDK w aplikacji, chcesz:

  1. Zaimportuj klasę DefaultAzureCredential z modułu @azure/identity .
  2. Utwórz DefaultAzureCredential obiekt.
  3. Przekaż obiekt do konstruktora DefaultAzureCredential obiektu klienta zestawu Azure SDK.

Przykład tych kroków przedstawiono w następującym segmencie kodu.

// connect-with-default-azure-credential.js
import { BlobServiceClient } from '@azure/storage-blob';
import { DefaultAzureCredential } from '@azure/identity';
import 'dotenv/config'

const accountName = process.env.AZURE_STORAGE_ACCOUNT_NAME;
if (!accountName) throw Error('Azure Storage accountName not found');

const blobServiceClient = new BlobServiceClient(
  `https://${accountName}.blob.core.windows.net`,
  new DefaultAzureCredential()
);