Аутентификация и авторизация в службе "Пространственные привязки Azure"

В этой статье описываются различные способы проверки подлинности в службе "Пространственные привязки Azure" из приложения или веб-службы. Вы также узнаете о способах управления доступом на основе ролей Azure (Azure RBAC) в идентификаторе Microsoft Entra для управления доступом к учетным записям пространственных привязок.

Предупреждение

Мы рекомендуем использовать ключи учетной записи для быстрого подключения только во время разработки или создания прототипов. Не рекомендуется поставлять приложение в рабочую среду с внедренным ключом учетной записи. Вместо этого используйте подходы проверки подлинности Microsoft Entra на основе пользователей или служб, описанные ниже.

Обзор

Diagram that shows an overview of authentication to Azure Spatial Anchors.

Чтобы получить доступ к конкретной учетной записи службы "Пространственные привязки Azure", клиенту необходимо сначала получить маркер доступа от службы токенов безопасности для Смешанной реальности Azure. Маркеры, полученные от службы маркеров безопасности, действительны 24 часа. Они содержат сведения для служб Пространственных привязок, позволяющие принимать решения об авторизации в учетной записи и предоставлять доступ к ней только авторизованным субъектам.

Маркеры доступа можно получить в обмен на ключи учетной записи или маркеры, выданные идентификатором Microsoft Entra.

Ключи учетной записи позволяют быстро приступить к работе с помощью службы Пространственных привязок Azure. Но перед развертыванием приложения в рабочей среде рекомендуется обновить приложение для использования проверки подлинности Microsoft Entra.

Маркеры проверки подлинности Microsoft Entra можно получить двумя способами:

  • Если вы создаете корпоративное приложение, и ваша компания использует идентификатор Microsoft Entra в качестве своей системы удостоверений, вы можете использовать проверку подлинности Microsoft Entra на основе пользователей в приложении. Затем вы предоставляете доступ к учетным записям пространственных привязок с помощью существующих групп безопасности Microsoft Entra. Вы также можете предоставлять доступ пользователям в вашей организации напрямую.
  • В противном случае рекомендуется получить маркеры Microsoft Entra из веб-службы, поддерживающей ваше приложение. Этот метод рекомендуется использовать для рабочих приложений, так как он позволяет избежать внедрения учетных данных для доступа к Пространственным привязкам Azure в клиентском приложении.

Ключи учетной записи

Самый быстрый способ приступить к работе — использовать ключи учетной записи для доступа к учетной записи Пространственных привязок Azure. Ключи учетной записи можно получить на портале Azure. Перейдите в свою учетную запись и откройте вкладку Ключи.

Screenshot that shows the Keys tab with the Copy button for the Primary key highlighted.

Доступно два ключа. Для доступа к учетной записи Пространственных привязок можно использовать любой из них. Рекомендуется регулярно обновлять ключ, используемый для доступа к учетной записи. Два действительных ключа позволяют проводить эти обновления без простоев. Вам достаточно поочередно обновлять первичный и вторичный ключи.

Пакет SDK имеет встроенную поддержку проверки подлинности с помощью ключей учетной записи. Вам нужно просто задать свойство AccountKey для объекта cloudSession.

this.cloudSession.Configuration.AccountKey = @"MyAccountKey";

После установки этого свойства пакет SDK будет обрабатывать обмен ключа учетной записи на маркер доступа и необходимое кэширование маркеров для вашего приложения.

Проверка подлинности пользователя Microsoft Entra

Для приложений, предназначенных для пользователей Microsoft Entra, рекомендуется использовать маркер Microsoft Entra для пользователя. Этот маркер можно получить с помощью MSAL. Выполните инструкции, описанные в кратком руководстве по регистрации приложения, которые включают следующие действия.

на портале Azure.

  1. Зарегистрируйте приложение в идентификаторе Microsoft Entra в качестве собственного приложения. В процессе регистрации вам нужно будет определить, должно ли приложение быть мультитенантным. Вам также потребуется указать URL-адреса перенаправления, разрешенные для приложения.

  2. Перейдите на вкладку Разрешения API.

  3. Выберите Добавить разрешение.

    1. Выберите Поставщик ресурсов Смешанной реальности на вкладке API, используемые в моей организации.
    2. Выберите Делегированные разрешения.
    3. В разделе mixedreality выберите mixedreality.signin.
    4. Выберите Добавить разрешения.
  4. Выберите Предоставить согласие администратора.

  5. Назначьте роль RBAC ASA приложению или пользователям, которым вы хотите предоставить доступ к ресурсу. Если вы хотите, чтобы пользователи приложения имели разные роли в учетной записи ASA, зарегистрируйте несколько приложений в идентификаторе Microsoft Entra и назначьте отдельную роль каждой из них. Затем реализуйте логику авторизации, чтобы пользователи получали нужные роли. Подробные инструкции по назначению ролей см. в статье Назначение ролей Azure с помощью портала Microsoft Azure.

В вашем коде

  1. Обязательно используйте идентификатор приложения и URI перенаправления собственного приложения Microsoft Entra для параметров идентификатора клиента и RedirectUri в MSAL.
  2. Задайте сведения о клиенте:
    1. Если ваше приложение поддерживает вариант Только моя организация, замените это значение на ваш идентификатор клиента или имя клиента. Например, contoso.microsoft.com.
    2. Если приложение поддерживает вариант Учетные записи в любом каталоге организации, замените это значение на Организации.
    3. Если приложение поддерживает вариант Все пользователи с учетными записями Майкрософт, замените это значение на Общее.
  3. В запросе маркера задайте для областьhttps://sts.mixedreality.azure.com//.defaultзначение . Этот область указывает идентификатору Microsoft Entra, что приложение запрашивает маркер для службы маркеров безопасности Смешанная реальность (STS).

После выполнения этих действий приложение должно получить от MSAL маркер Microsoft Entra. Вы можете задать маркер Microsoft Entra в качестве объекта конфигурации облачного authenticationToken сеанса:

this.cloudSession.Configuration.AuthenticationToken = @"MyAuthenticationToken";

Проверка подлинности службы Microsoft Entra

Для развертывания приложений, использующих Пространственные привязки Azure в рабочей среде, рекомендуется использовать серверную службу, которая будет выступать посредником при запросах проверки подлинности. Ниже представлен обзор этого процесса.

Diagram that provides an overview of authentication to Azure Spatial Anchors.

В данном случае предполагается, что приложение использует собственный механизм для проверки подлинности в серверной службе. (Например, учетная запись Майкрософт, PlayFab, Facebook, идентификатор Google или пользовательское имя пользователя и пароль.) После проверки подлинности пользователей в серверной службе эта служба может получить маркер Microsoft Entra, обменять его на маркер доступа для пространственных привязок Azure и вернуть его в клиентское приложение.

Маркер доступа Microsoft Entra извлекается через MSAL. Выполните инструкции, описанные в кратком руководстве по регистрации приложения, которые включают следующие действия.

на портале Azure.

  1. Зарегистрируйте приложение в идентификаторе Microsoft Entra:
    1. В портал Azure выберите идентификатор Microsoft Entra, а затем выберите Регистрация приложений.
    2. Выберите Создать регистрацию.
    3. Введите имя приложения, выберите для него тип Веб-приложение или API и введите URL-адрес аутентификации для своей службы. Выберите Создать.
  2. В приложении нажмите Параметры, а затем перейдите на вкладку Сертификаты и секреты. Создайте новый секрет клиента, выберите длительность и нажмите кнопку Добавить. Не забудьте сохранить значение секрета. Вам нужно будет включить его в ваш код веб-службы.
  3. Назначьте роль RBAC ASA приложению или пользователям, которым вы хотите предоставить доступ к ресурсу. Если вы хотите, чтобы пользователи приложения имели разные роли в учетной записи ASA, зарегистрируйте несколько приложений в идентификаторе Microsoft Entra и назначьте отдельную роль каждой из них. Затем реализуйте логику авторизации, чтобы пользователи получали нужные роли. Подробные инструкции по назначению ролей см. в статье Назначение ролей Azure с помощью портала Microsoft Azure.

В вашем коде

Примечание.

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

  1. Обязательно используйте идентификатор приложения, секрет приложения и URI перенаправления собственного приложения Microsoft Entra в качестве идентификатора клиента, секрета и перенаправления параметров в MSAL.
  2. Задайте идентификатор клиента собственным идентификатором клиента Microsoft Entra в параметре центра в MSAL.
  3. В запросе маркера задайте для областьhttps://sts.mixedreality.azure.com//.defaultзначение .

После выполнения этих действий серверная служба может получить маркер Microsoft Entra. Затем она обменяет его на токен СР, который будет возвращен клиенту. Использование маркера Microsoft Entra для получения маркера MR выполняется с помощью вызова REST. Ниже приведен пример вызова.

GET https://sts.mixedreality.azure.com/Accounts/35d830cb-f062-4062-9792-d6316039df56/token HTTP/1.1
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1Ni<truncated>FL8Hq5aaOqZQnJr1koaQ
Host: sts.mixedreality.azure.com
Connection: Keep-Alive

HTTP/1.1 200 OK
Date: Sun, 24 Feb 2019 08:00:00 GMT
Content-Type: application/json; charset=utf-8
Content-Length: 1153
Accept: application/json
MS-CV: 05JLqWeKFkWpbdY944yl7A.0
{"AccessToken":"eyJhbGciOiJSUzI1NiIsImtpZCI6IjI2MzYyMTk5ZTI2NjQxOGU4ZjE3MThlM2IyMThjZTIxIiwidHlwIjoiSldUIn0.eyJqdGkiOiJmMGFiNWIyMy0wMmUxLTQ1MTQtOWEzNC0xNzkzMTA1NTc4NzAiLCJjYWkiOiIzNWQ4MzBjYi1mMDYyLTQwNjItOTc5Mi1kNjMxNjAzOWRmNTYiLCJ0aWQiOiIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAiLCJhaWQiOiIzNWQ4MzBjYi1mMDYyLTQwNjItOTc5Mi1kNjMxNjAzOWRmNTYiLCJhYW8iOi0xLCJhcHIiOiJlYXN0dXMyIiwicmlkIjoiL3N1YnNjcmlwdGlvbnMvNzIzOTdlN2EtNzA4NC00ODJhLTg3MzktNjM5Y2RmNTMxNTI0L3Jlc291cmNlR3JvdXBzL3NhbXBsZV9yZXNvdXJjZV9ncm91cC9wcm92aWRlcnMvTWljcm9zb2Z0Lk1peGVkUmVhbGl0eS9TcGF0aWFsQW5jaG9yc0FjY291bnRzL2RlbW9fYWNjb3VudCIsIm5iZiI6MTU0NDU0NzkwMywiZXhwIjoxNTQ0NjM0MzAzLCJpYXQiOjE1NDQ1NDc5MDMsImlzcyI6Imh0dHBzOi8vbXJjLWF1dGgtcHJvZC50cmFmZmljbWFuYWdlci5uZXQvIiwiYXVkIjoiaHR0cHM6Ly9tcmMtYW5jaG9yLXByb2QudHJhZmZpY21hbmFnZXIubmV0LyJ9.BFdyCX9UJj0i4W3OudmNUiuaGgVrlPasNM-5VqXdNAExD8acFJnHdvSf6uLiVvPiQwY1atYyPbOnLYhEbIcxNX-YAfZ-xyxCKYb3g_dbxU2w8nX3zDz_X3XqLL8Uha-rkapKbnNgxq4GjM-EBMCill2Svluf9crDmO-SmJbxqIaWzLmlUufQMWg_r8JG7RLseK6ntUDRyDgkF4ex515l2RWqQx7cw874raKgUO4qlx0cpBAB8cRtGHC-3fA7rZPM7UQQpm-BC3suXqRgROTzrKqfn_g-qTW4jAKBIXYG7iDefV2rGMRgem06YH_bDnpkgUa1UgJRRTckkBuLkO2FvA"}

Здесь заголовок авторизации имеет следующий формат: Bearer <Azure_AD_token>.

Ответ содержит маркер CP в виде обычного текста.

Этот токен СР возвращается клиенту. Затем клиентское приложение может задать его в качестве маркера доступа в конфигурации облачного сеанса.

this.cloudSession.Configuration.AccessToken = @"MyAccessToken";

Управление доступом на основе ролей Azure

Чтобы управлять уровнем доступа, предоставленным приложениям, службам или пользователям службы Microsoft Entra, вы можете назначить эти предварительно существующие роли в учетных записях Пространственных привязок Azure:

  • Владелец учетной записи Пространственных привязок. Приложения и пользователи с этой ролью могут создавать, запрашивать и удалять пространственные привязки. Роль владельца учетной записи пространственных привязок назначается субъекту, прошедшему аутентификацию с использованием ключей учетной записи.
  • Участник учетной записи Пространственных привязок. Приложения и пользователи с этой ролью могут создавать и запрашивать пространственные привязки, но не могут удалять их.
  • Читатель учетной записи Пространственных привязок. Приложения или пользователи с этой ролью могут только запрашивать пространственные привязки. Они не могут создавать новые, удалять существующие пространственные привязки или обновлять метаданные. Эта роль обычно используется для приложений, в которых одни пользователи курируют среду, а другие могут только повторно вызывать привязки, которые уже помещены в эту среду.

Следующие шаги

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

iOS