Поделиться через


Цепочки учетных данных в клиентской библиотеке удостоверений Azure для JavaScript

Клиентская библиотека удостоверений Azure предоставляет учетные данные , которые являются общедоступными классами, реализующими интерфейс TokenCredential библиотеки Azure Core. Учетные данные представляют собой отдельный процесс аутентификации для получения токена доступа от Microsoft Entra ID. Эти учетные данные можно выбрать по отдельности или объединить в цепочку, чтобы сформировать упорядоченную последовательность механизмов проверки подлинности, которые необходимо предпринять.

  • Отдельные учетные данные обеспечивают скорость и уверенность. Если они завершаются ошибкой, вы знаете, что учетные данные не прошли проверку подлинности.
  • Цепочки обеспечивают резервные копии. Если учетные данные не удается пройти проверку подлинности, выполняется попытка выполнить следующую проверку подлинности.

Проектирование потоков проверки подлинности

При использовании клиентских библиотек пакета SDK Azure сначала необходимо выполнить проверку подлинности в Azure. Существует множество вариантов проверки подлинности, таких как средства и идентификаторы, используемые в команде разработки, рабочие процессы автоматизации, такие как тестирование и CI/CD, а также платформы размещения, такие как Служба приложений Azure.

Выберите следующие распространенные прогрессии для потока проверки подлинности:

  • DefaultAzureCredential Используйте команды, разработчики которых используют различные идентификаторы и среды CL Для проверки подлинности в Azure. Это обеспечивает максимальную гибкость. Эта гибкость предоставляется по стоимости производительности, чтобы проверить учетные данные в цепочке до тех пор, пока не будет выполнено успешно.

    • Резервная обратная связь с учетными данными выбирается от вашего имени в зависимости от обнаруженной среды.
    • Чтобы определить, какие учетные данные были выбраны, включите отладку.
  • ChainedTokenCredential Используйте команды, которые имеют строгий и ограниченный выбор инструментов. Например, все они проходят проверку подлинности и используют одну и ту же интегрированную среду разработки или CLI. Это позволяет команде выбрать точные учетные данные и порядок, который по-прежнему обеспечивает гибкость, но при сниженной производительности.

    • Вы выбираете резервный путь из учетных данных в учетные данные независимо от среды, в которой она выполняется.
    • Чтобы определить, какие учетные данные были выбраны, включите отладку.
  • Для команд с определенными учетными данными во всех средах оператор потока управления, например if/else, позволяет узнать, какие учетные данные были выбраны в каждой среде.

    • Нет резервного доступа к другому типу учетных данных.
    • Не нужно отлаживать, чтобы определить, какие учетные данные были выбраны, так как он был указан.

Как работает связанное удостоверение

Во время выполнения цепочка учетных данных пытается авторизоваться с помощью первой учётной записи из последовательности. Если не удается использовать эти учетные данные для получения токена доступа, пробуются следующие учетные данные в последовательности и так далее, пока токен доступа не будет успешно получен. На следующей схеме последовательности показано следующее поведение:

Схема, показывающая поток последовательности учетных данных удостоверения Azure.

Использование DefaultAzureCredential для гибкости

DefaultAzureCredential — это настроенная на основе предпочтений предварительно настроенная цепочка учетных данных. Она предназначена для поддержки многих сред, а также наиболее распространенных потоков проверки подлинности и средств разработчика. В графической форме базовая цепочка выглядит следующим образом:

Схема, на которую показан поток проверки подлинности DefaultAzureCredential.

Порядок, в котором DefaultAzureCredential проверяет учетные данные, следующий.

Заказ Подтверждение компетенции Описание
1 Окружающая среда Считывает коллекцию переменных окружения, чтобы выяснить, настроен ли служебный принципал (пользователь приложения) для приложения. Если так, DefaultAzureCredential использует эти значения для проверки подлинности приложения в Azure. Этот метод чаще всего используется в средах сервера, но также может использоваться при разработке локально.
2 Идентификация рабочей нагрузки Если приложение развернуто на узле Azure с включенной рабочей идентификацией, выполните проверку подлинности этой учетной записи.
3 Управляемая идентичность Если приложение развернуто на узле Azure с включенным управляемым удостоверением, выполните проверку подлинности приложения в Azure с помощью этого управляемого удостоверения.
4 Azure CLI Если разработчик прошел проверку подлинности в Azure с помощью команды Azure CLI az login , выполните проверку подлинности приложения в Azure с помощью той же учетной записи.
5 Azure PowerShell Если разработчик прошел проверку подлинности в Azure с помощью командлета Connect-AzAccount Azure PowerShell, выполните проверку подлинности приложения в Azure с помощью той же учетной записи.
6 Интерфейс командной строки разработчика Azure Если разработчик прошел проверку подлинности в Azure с помощью команды Azure Developer CLI azd auth login , выполните проверку подлинности с помощью этой учетной записи.

В самой простой форме можно использовать версию DefaultAzureCredential без параметров следующим образом:

import { DefaultAzureCredential } from "@azure/identity";
import { BlobServiceClient } from "@azure/storage-blob";

// Acquire a credential object
const credential = new DefaultAzureCredential();

const blobServiceClient = new BlobServiceClient(
    "https://<my_account_name>.blob.core.windows.net",
    credential
);

Учетные данные являются глобальными для среды

DefaultAzureCredential проверяет наличие определенных переменных среды. Возможно, кто-то может добавить или изменить эти переменные среды на уровне системы на хост-компьютере. Эти изменения применяются глобально и поэтому изменяют поведение DefaultAzureCredential во время выполнения в любом приложении, работающем на этом компьютере.

Как настроить DefaultAzureCredential

Чтобы исключить все Developer tool или Deployed service учетные данные, установите значение переменной среды AZURE_TOKEN_CREDENTIALS на prod или dev, соответственно. Если используется значение prod, основная цепочка учетных данных выглядит следующим образом:

Схема, показывающая DefaultAzureCredential с AZURE_TOKEN_CREDENTIALS значение

Если используется значение dev , цепочка выглядит следующим образом:

Схема, показывающая DefaultAzureCredential с AZURE_TOKEN_CREDENTIALS задано значение dev.

Это важно

Переменная AZURE_TOKEN_CREDENTIALS среды поддерживается в @azure/identity пакетах версии 4.10.0 и более поздних версий.

Использование ChainedTokenCredential для детализации

ChainedTokenCredential — это пустая цепочка, в которую добавляются учетные данные в соответствии с потребностями приложения. Например, в следующем примере добавляется ManagedIdentityCredential экземпляр, а затем AzureCliCredential экземпляр.

import { 
    ChainedTokenCredential, 
    ManagedIdentityCredential, 
    AzureCliCredential 
} from "@azure/identity";

const credential = new ChainedTokenCredential(
    new ManagedIdentityCredential({ clientId: "<YOUR_CLIENT_ID>" }),
    new AzureCliCredential()
);

В предыдущем примере кода создается настраиваемая цепочка учетных данных, состоящая из двух учетных данных. При необходимости выполняется попытка первого варианта управляемого удостоверения, ManagedIdentityCredentialназначаемого AzureCliCredential пользователем. В графической форме цепочка выглядит следующим образом:

Схема, показывающая цепочку учетных данных azure для управляемого удостоверения и Azure CLI.

Подсказка

Для повышения производительности оптимизируйте порядок учетных данных для рабочей среды. Учетные данные, предназначенные для использования в локальной среде разработки, должны быть добавлены последним.

Отладка цепочки учетных данных

Чтобы выполнить отладку цепочки учетных данных, включите ведение журнала пакета SDK Для Azure.

Дополнительные ресурсы