Проверка подлинности приложений .NET в службах Azure во время локальной разработки с помощью учетных записей разработчиков
Разработчикам необходимо выполнять отладку и тестирование облачных приложений на локальных рабочих станциях. Когда приложение работает на рабочей станции разработчика во время локальной разработки, оно по-прежнему должно пройти проверку подлинности в любых службах Azure, используемых приложением. В этой статье описывается, как использовать учетные данные разработчика Azure для проверки подлинности приложения в Azure во время локальной разработки.
Чтобы приложение выполняло проверку подлинности в Azure во время локальной разработки с помощью учетных данных Azure разработчика, разработчик должен войти в Azure из одного из следующих средств разработчика:
- Visual Studio
- Azure CLI
- Azure Developer CLI
- Azure PowerShell
Библиотека удостоверений Azure может обнаружить, что разработчик вошел из одного из этих средств. Затем библиотека может получить маркер доступа Microsoft Entra через средство проверки подлинности приложения в Azure в качестве пользователя, выполнившего вход.
Этот подход проще всего настроить для команды разработчиков, так как он использует преимущества существующих учетных записей Azure разработчиков. Однако учетная запись разработчика, скорее всего, имеет больше разрешений, чем требуется для приложения, поэтому превышение разрешений, с которыми приложение выполняется в рабочей среде. В качестве альтернативы можно создать субъекты-службы приложений для использования во время локальной разработки, которые могут быть ограничены только доступом, необходимым для приложения.
1. Создание группы Microsoft Entra для локальной разработки
Так как в приложении почти всегда есть несколько разработчиков, группа Microsoft Entra рекомендуется инкапсулировать роли (разрешения) приложения, необходимые для локальной разработки. Этот подход обеспечивает следующие преимущества:
- Каждый разработчик гарантирует, что на уровне группы назначены одни и те же роли, так как роли назначаются на уровне группы.
- Если для приложения требуется новая роль, ее необходимо добавить только в группу для приложения.
- Если новый разработчик присоединяется к команде, они получают необходимые разрешения для работы с приложением после добавления в группу.
Если у вас есть группа Microsoft Entra для вашей группы разработки, вы можете использовать эту группу. В противном случае выполните следующие действия, чтобы создать группу Microsoft Entra.
Примечание.
По умолчанию создание групп Microsoft Entra ограничено определенными привилегированными ролями в каталоге. Если вы не можете создать группу, обратитесь к администратору каталога. Если вы не можете добавить участников в существующую группу, обратитесь к владельцу группы или администратору каталога. Дополнительные сведения см. в статье "Управление группами Microsoft Entra" и членством в группах.
2. Назначение ролей группе Microsoft Entra
Затем определите, какие роли (разрешения) приложению требуются для ресурсов и назначьте эти роли приложению. В этом примере роли назначаются группе Microsoft Entra, созданной на шаге 1. Группы можно назначить роль в ресурсе, группе ресурсов или области подписки. В этом примере показано, как назначать роли в группе ресурсов, области, так как большинство приложений группировать все ресурсы Azure в одну группу ресурсов.
3. Вход в Azure с помощью средств разработчика
Затем войдите в Azure с помощью одного из нескольких средств разработчика. Учетная запись, которую вы выполняете проверку подлинности, также должна существовать в созданной и настроенной ранее группе Microsoft Entra.
Перейдите к параметрам инструментов>, чтобы открыть диалоговое окно параметров.
В поле "Параметры поиска" в верхней части введите Azure, чтобы отфильтровать доступные параметры.
В разделе "Проверка подлинности службы Azure" выберите пункт "Выбор учетной записи".
Выберите раскрывающееся меню в разделе "Выбор учетной записи" и выберите команду "Добавить учетную запись Майкрософт". Откроется окно с запросом на выбор учетной записи. Введите учетные данные для требуемой учетной записи Azure и выберите подтверждение.
Нажмите кнопку "ОК", чтобы закрыть диалоговое окно параметров.
4. Реализация DefaultAzureCredential в приложении
DefaultAzureCredential — это упорядоченная последовательность механизмов проверки подлинности в Microsoft Entra. Каждый механизм проверки подлинности является классом, производным от класса TokenCredential, и называется учетными данными. Во время выполнения DefaultAzureCredential
пытается пройти проверку подлинности с помощью первых учетных данных. Если эти учетные данные не удается получить маркер доступа, выполняется попытка следующего учетных данных в последовательности и т. д., пока маркер доступа не будет успешно получен. Таким образом, приложение может использовать разные учетные данные в разных средах без написания кода для конкретной среды.
Порядок и расположения, в которых DefaultAzureCredential
поиск учетных данных найден в DefaultAzureCredential.
Чтобы использовать DefaultAzureCredential
, добавьте Azure.Identity и при необходимости пакеты Microsoft.Extensions.Azure в приложение:
В выбранном терминале перейдите к каталогу проекта приложения и выполните следующие команды:
dotnet add package Azure.Identity
dotnet add package Microsoft.Extensions.Azure
К службам Azure обращаются специализированные клиентские классы из различных клиентских библиотек Azure SDK. Эти классы и собственные пользовательские службы должны быть зарегистрированы, чтобы их можно было получить через внедрение зависимостей во всем приложении. Выполните Program.cs
следующие действия, чтобы зарегистрировать клиентский класс и DefaultAzureCredential
:
Azure.Identity
Включите пространства имен иMicrosoft.Extensions.Azure
пространства имен с помощьюusing
директив.- Зарегистрируйте клиент службы Azure с помощью соответствующего
Add
метода расширения с префиксом. - Передайте экземпляр
DefaultAzureCredential
UseCredential
метода.
Например:
using Microsoft.Extensions.Azure;
using Azure.Identity;
builder.Services.AddAzureClients(clientBuilder =>
{
clientBuilder.AddBlobServiceClient(
new Uri("https://<account-name>.blob.core.windows.net"));
clientBuilder.UseCredential(new DefaultAzureCredential());
});
UseCredential
Альтернативой является создание экземпляра DefaultAzureCredential
напрямую:
using Azure.Identity;
builder.Services.AddSingleton<BlobServiceClient>(_ =>
new BlobServiceClient(
new Uri("https://<account-name>.blob.core.windows.net"),
new DefaultAzureCredential()));
Когда предыдущий код выполняется на локальной рабочей станции разработки, он выглядит в переменных среды для субъекта-службы приложений или локально установленных средств разработчика, таких как Visual Studio, для набора учетных данных разработчика. Любой подход можно использовать для проверки подлинности приложения в ресурсах Azure во время локальной разработки.
При развертывании в Azure этот же код также может пройти проверку подлинности приложения в других ресурсах Azure. DefaultAzureCredential
может получать параметры среды и конфигурации управляемых удостоверений для автоматической проверки подлинности в других службах.