Доступ к Общедоступному API Azure Sphere с помощью управляемого удостоверения AAD
Этот метод можно использовать для проверки подлинности в любой службе, поддерживающей проверку подлинности 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 CLI.
- Идентификатор клиента Azure. Найдите идентификатор клиента с помощью портал Azure. Скопируйте идентификатор клиента Azure Active Directory.
Azure Sphere обрабатывает субъект-службу как другого пользователя. Чтобы получить маркер с помощью субъекта-службы, сначала добавьте пользователя субъекта-службы в клиент Azure Sphere, а затем назначьте роль пользователю в клиенте Azure Sphere с помощью Azure Sphere CLI.
Удостоверение пользователя можно создать как <ObjectID>@<TenantID.onmicrosoft.com>.
В следующем примере мы создадим пользователя, используя сочетание идентификатора xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
объекта и Azure AD идентификатора zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz
клиента в идентификаторе tttttttt-tttt-tttt-tttt-tttttttttttt
клиента Azure Sphere , а затем добавим роль Участника для этого пользователя.
Войдите с помощью входа в Azure Sphere с помощью Azure Sphere CLI:
azsphere login
Выберите необходимый клиент:
azsphere tenant select --tenant tttttttt-tttt-tttt-tttt-tttttttttttt
Чтобы создать пользователя субъекта-службы для клиента Azure Sphere, выполните следующие действия.
azsphere register-user --new-user xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx@zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz.onmicrosoft.com
Чтобы добавить пользователя в требуемую роль, выполните следующие действия:
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;
}