Udostępnij za pośrednictwem


Jak uwierzytelniać aplikacje JavaScript w usługach platformy Azure przy użyciu biblioteki tożsamości platformy Azure

Jeśli aplikacja musi uzyskać dostęp do zasobu platformy Azure, takiego jak Storage, Key Vault lub Cognitive Services, aplikacja musi zostać uwierzytelniona na platformie Azure. Dotyczy to wszystkich aplikacji, zarówno wdrożonych na platformie Azure, wdrożonych lokalnie, jak i w ramach programowania na lokalnej stacji roboczej dewelopera. W tym artykule opisano zalecane podejścia do uwierzytelniania aplikacji na platformie Azure podczas korzystania z zestawu Azure SDK dla języka JavaScript.

Zaleca się użycie uwierzytelniania opartego na tokenach, zamiast parametrów połączenia lub kluczy podczas uwierzytelniania zasobów Azure. Biblioteka tożsamości platformy Azure zapewnia uwierzytelnianie oparte na tokenach i umożliwia aplikacjom bezproblemowe uwierzytelnianie w zasobach platformy Azure niezależnie od tego, czy aplikacja jest w środowisku lokalnym, wdrożona na platformie Azure, czy wdrożona na serwerze lokalnym.

Określony typ uwierzytelniania opartego na tokenach, którego aplikacja powinna używać do uwierzytelniania w zasobach platformy Azure, zależy od tego, gdzie aplikacja jest uruchomiona i jest pokazana na poniższym diagramie.

Środowisko Uwierzytelnianie
Lokal Gdy deweloper uruchamia aplikację podczas programowania lokalnego — aplikacja może uwierzytelniać się na platformie Azure przy użyciu jednostki usługi aplikacji na potrzeby programowania lokalnego lub przy użyciu poświadczeń platformy Azure dewelopera. Każdą z tych opcji omówiono bardziej szczegółowo w sekcji uwierzytelniania podczas programowania lokalnego.
Azure Gdy aplikacja jest hostowana na platformie Azure — aplikacja powinna uwierzytelniać się w zasobach platformy Azure przy użyciu tożsamości zarządzanej. Ta opcja została omówiona bardziej szczegółowo poniżej w sekcji uwierzytelniania w środowiskach serwera.
lokalne Gdy aplikacja jest hostowana i wdrożona lokalnie — aplikacja powinna uwierzytelniać się w zasobach platformy Azure przy użyciu jednostki usługi aplikacji. Ta opcja została omówiona bardziej szczegółowo poniżej w sekcji uwierzytelniania w środowiskach serwera.

Diagram przedstawiający zalecane strategie uwierzytelniania oparte na tokenach dla aplikacji w zależności od tego, gdzie jest uruchomiona.

Zalety uwierzytelniania opartego na tokenach

Podczas tworzenia aplikacji dla platformy Azure zdecydowanie zaleca się uwierzytelnianie oparte na tokenach zamiast sekretów (parametrów połączenia lub kluczy). Uwierzytelnianie oparte na tokenach jest realizowane przy użyciu DefaultAzureCredential.

Uwierzytelnianie oparte na tokenach Wpisy tajne (parametry połączenia i klucze)
zasada najniższych uprawnień, ustanów określone uprawnienia wymagane przez aplikację w zasobie platformy Azure. Parametry połączenia lub klucz udzielają pełnych praw do zasobu platformy Azure.
Nie ma tajnego klucza aplikacji do przechowywania. Należy przechowywać i odświeżać tajne dane w ustawieniach aplikacji lub zmiennych środowiskowych.
Biblioteka tożsamości platformy Azure zarządza tokenami za kulisami. Dzięki temu używanie uwierzytelniania opartego na tokenach jest tak łatwe w użyciu jak łańcuch znaków połączenia. Sekrety nie są zarządzane.

Korzystanie z parametrów połączenia powinno być ograniczone do początkowego sprawdzania koncepcji lub prototypów programistycznych, które nie uzyskują dostępu do danych produkcyjnych ani poufnych. W przeciwnym razie klasy uwierzytelniania oparte na tokenach dostępne w bibliotece tożsamości platformy Azure powinny być zawsze preferowane podczas uwierzytelniania w zasobach platformy Azure.

Użyj następującej biblioteki:

Wartość domyślnaAzureCredential

Klasa DefaultAzureCredential dostarczana przez bibliotekę tożsamości platformy Azure umożliwia aplikacjom korzystanie z różnych metod uwierzytelniania w zależności od środowiska, w którym są uruchamiane. To zachowanie umożliwia podwyższenie poziomu aplikacji z lokalnego programowania do środowisk testowych do środowiska produkcyjnego bez zmian kodu. Skonfigurujesz odpowiednią metodę uwierzytelniania dla każdego środowiska, a DefaultAzureCredential automatycznie wykryje i użyje tej metody uwierzytelniania. Użycie DefaultAzureCredential powinno być preferowane zamiast ręcznego kodowania logiki warunkowej lub flag funkcji do używania różnych metod uwierzytelniania w różnych środowiskach.

Szczegółowe informacje o korzystaniu z DefaultAzureCredential zostały omówione w . Użyj DefaultAzureCredential w aplikacji.

Uwierzytelnianie w środowiskach serwera

W przypadku hostowania w środowisku serwera każda aplikacja powinna mieć przypisaną unikatową tożsamość aplikacji na środowisko. Na platformie Azure tożsamość aplikacji jest reprezentowana przez jednostkę usługi , która jest specjalnym rodzajem podmiotu zabezpieczeń, przeznaczonym do identyfikacji i uwierzytelniania aplikacji na platformie Azure. Typ jednostki usługi używanej dla aplikacji zależy od tego, gdzie aplikacja jest uruchomiona.

Uwierzytelnianie podczas programowania lokalnego

Gdy aplikacja jest uruchamiana na stacji roboczej dewelopera podczas programowania lokalnego, środowisko lokalne musi nadal uwierzytelniać się w dowolnych usługach platformy Azure używanych przez aplikację.

Użycie DefaultAzureCredential w aplikacji

DefaultAzureCredential jest przemyślaną, uporządkowaną sekwencją mechanizmów uwierzytelniania dla Microsoft Entra ID. Każdy mechanizm uwierzytelniania jest klasą pochodzącą z klasy TokenCredential i jest nazywany poświadczeniem. W czasie wykonywania DefaultAzureCredential próbuje uwierzytelnić się przy użyciu pierwszego poświadczenia. Jeśli to poświadczenie nie może uzyskać tokenu dostępu, zostanie podjęta próba następnego poświadczenia w sekwencji itd., dopóki token dostępu nie zostanie pomyślnie uzyskany. W ten sposób aplikacja może używać różnych poświadczeń w różnych środowiskach bez konieczności pisania kodu specyficznego dla środowiska.

Aby użyć DefaultAzureCredential, dodaj pakiet @azure/identity do aplikacji.

npm install @azure/identity

Następnie poniższy przykład kodu pokazuje, jak stworzyć wystąpienie obiektu DefaultAzureCredential i wykorzystać je z klasą klienta Azure SDK — w tym przypadku BlobServiceClient służącego do uzyskiwania dostępu do usługi Azure Blob Storage.

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()
);

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.