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.
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.
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:
- Zaimportuj klasę
DefaultAzureCredential
z modułu@azure/identity
. - Utwórz
DefaultAzureCredential
obiekt. - 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()
);