Доступ к общедоступному API Azure Sphere с помощью управляемого удостоверения AAD
Внимание
Это документация по Azure Sphere (устаревшая версия). Служба Azure Sphere (устаревшая версия) выходит на пенсию 27 сентября 2027 г., и к этому времени пользователи должны перейти в Azure Sphere (интегрированная). Используйте селектор версий, расположенный над toC, чтобы просмотреть документацию по Azure Sphere (интегрированная).
Этот метод можно использовать для проверки подлинности в любой службе, поддерживающей проверку подлинности Azure Active Directory (AAD), без каких-либо учетных данных в коде. Управляемое удостоверение AAD обрабатывает создание или продление субъектов-служб от вашего имени. Это субъект-служба специального типа, который может использоваться только с ресурсами Azure. При удалении управляемого удостоверения соответствующий субъект-служба автоматически удаляется.
Назначаемые системой. Некоторые службы Azure позволяют включить управляемое удостоверение непосредственно в экземпляре службы. Например, служба приложение Azure. При включении управляемого удостоверения, назначенного системой, в Azure AD создается удостоверение, связанное с жизненным циклом этого экземпляра службы. Поэтому при удалении ресурса Azure автоматически удаляет удостоверение. Только ресурс Azure может использовать это удостоверение для запроса маркеров из Azure AD.
Необходимые компоненты
- Устройство на основе Azure Sphere с функциями разработки.
- Клиент Azure Sphere.
- Настройте среду разработки для Azure Sphere.
- Клиент Azure Active Directory (идентификатор клиента).
- Подписка Azure.
- Добавьте идентификатор общедоступного приложения API Azure Sphere в клиент Azure.
В следующем разделе объясняется, как вызвать общедоступный API Azure Sphere (PAPI) из веб-приложения Azure с помощью управляемого удостоверения.
Шаг 1. Включение удостоверения, назначаемого системой, в ресурсе
Чтобы включить назначаемое системой удостоверение в ресурсе и найти идентификатор объекта для проекта:
- В портал Azure в области навигации слева щелкните Служба приложений.
- Выберите необходимые подписки из раскрывающегося списка и выберите приложение из результатов поиска.
- В меню приложения логики в разделе Параметры выберите Идентификатор.
- Включите удостоверение, назначаемое системой, задав для параметра "Состояние включено".
- Нажмите кнопку Сохранить.
- Скопируйте идентификатор объекта.
Шаг 2. Добавление управляемого удостоверения в клиент Azure Sphere
Примечание.
Перед началом этого шага убедитесь, что у вас есть следующее:
- Клиент Azure Sphere: выполните команду azsphere tenant show-selected с помощью Интерфейса командной строки Azure Sphere.
- Идентификатор клиента Azure: поиск идентификатора клиента с помощью портал Azure. Скопируйте идентификатор клиента Azure Active Directory.
Azure Sphere обрабатывает субъект-службу как другого пользователя. Чтобы получить маркер с помощью субъекта-службы, сначала добавьте пользователя субъекта-службы в клиент Azure Sphere, а затем назначьте роль пользователю в клиенте Azure Sphere с помощью Azure Sphere CLI.
Удостоверение пользователя можно создать как <ObjectID>@<TenantID.onmicrosoft.com>.
В следующем примере мы создадим пользователя с помощью сочетания идентификатора объекта и идентификатора xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz
клиента Azure AD в идентификаторе tttttttt-tttt-tttt-tttt-tttttttttttt
клиента Azure Sphere, а затем добавьте роль участника для этого пользователя.
Войдите с помощью имени входа в Azure Sphere с помощью Azure Sphere CLI:
azsphere login
Выберите необходимый клиент:
azsphere tenant select --tenant tttttttt-tttt-tttt-tttt-tttttttttttt
Чтобы добавить пользователя в требуемую роль, выполните следующие действия.
azsphere role add --role Contributor --user xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx@zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz.onmicrosoft.com
Шаг 3. Добавление пакета NuGet Azure.Identity в проект
Добавьте пакет NuGet Azure.Identity в проект. Маркер общедоступного API Azure Sphere (PAPI) можно получить по умолчанию DefaultAzureCredential.
Пример см. в фрагменте кода:
public static async Task<string> GetAS3Token()
{
DefaultAzureCredential credential = new DefaultAzureCredential();
var result = await credential.GetTokenAsync(new Azure.Core.TokenRequestContext(
new[] { "https://firstparty.sphere.azure.net/api/.default" }));
return result.Token;
}