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


Проверка подлинности и авторизация приложения с помощью идентификатора Microsoft Entra для доступа к сущностям Azure Relay

Azure Relay поддерживает использование идентификатора Microsoft Entra для авторизации запросов к сущностям Ретранслятора Azure (гибридные Подключение, ретрансляторы WCF). С помощью идентификатора Microsoft Entra можно использовать управление доступом на основе ролей Azure (Azure RBAC) для предоставления разрешений субъекту безопасности, который может быть пользователем, группой или субъектом-службой приложений. Чтобы узнать больше о ролях и назначениях ролей, ознакомьтесь с общими сведениями о различных ролях.

Примечание.

Эта функция общедоступна во всех регионах, кроме Microsoft Azure, управляемых 21Vianet.

Обзор

Когда субъект безопасности (пользователь, группа или приложение) пытается получить доступ к сущности Relay, такой запрос должен быть авторизован. С идентификатором Microsoft Entra доступ к ресурсу является двухэтапным процессом.

  1. Сначала проверяется подлинность субъекта безопасности и возвращается токен OAuth 2.0. Имя ресурса для запроса токена — https://relay.azure.net. Если приложение выполняется в сущности Azure, такой как виртуальная машина Azure, масштабируемый набор виртуальных машин или приложение-функция Azure, оно может использовать для доступа к ресурсам управляемое удостоверение.
  2. Затем этот токен передается в запросе в службу Relay для авторизации доступа к указанному ресурсу (гибридные подключения, ретрансляторы WCF). Microsoft Entra разрешает доступ к защищенным ресурсам с помощью управления доступом на основе ролей Azure (Azure RBAC). Служба Azure Relay определяет набор встроенных ролей Azure, охватывающих общие наборы разрешений для доступа к сущностям Relay. Вы также можете определить настраиваемые роли для доступа к данным. Список поддерживаемых встроенных ролей Azure Relay см. в статье Встроенные роли Azure для Azure Relay. Собственные приложения и веб-приложения, которые запрашивают ретранслятор, также могут авторизоваться с помощью идентификатора Microsoft Entra.

Встроенные роли Azure для Azure Relay

Для Azure Relay управление пространствами имен и всеми связанными ресурсами через портал Azure и API управления ресурсами Azure уже защищено с помощью модели Azure RBAC. В Azure предоставляются следующие встроенные роли Azure для авторизации доступа к пространству имен Relay:

Роль Description
Владелец Azure Relay Эта роль обеспечивает полный доступ к ресурсам Azure Relay.
Прослушиватель Azure Relay Эта роль предоставляет права на прослушивание и чтение сущностей при доступе к ресурсам Azure Relay.
Отправитель Azure Relay Эта роль предоставляет права на отправку и чтение сущностей при доступе к ресурсам Azure Relay.

Область ресурса

Прежде чем назначить роль Azure субъекту безопасности, определите для него область доступа. Рекомендуется всегда предоставлять максимально узкие области.

В следующем списке описаны уровни, на которых можно ограничить доступ к ресурсам Azure Relay, начиная с самой узкой области:

  • Сущности Relay. Назначение ролей применяется к отдельным сущностям Relay, таким как гибридное подключение или ретранслятор WCF.
  • Пространство имен Relay. Назначение ролей применяется ко всем сущностям Relay в определенном пространстве имен.
  • Группа ресурсов. Назначение ролей применяется ко всем ресурсам Relay в определенной группе ресурсов.
  • Подписка. Назначение ролей применяется ко всем ресурсам Relay во всех группах ресурсов в определенной подписке.

Примечание.

Имейте в виду, что назначение ролей Azure может занять до пяти минут. Дополнительные сведения об определении встроенных ролей см. в разделе Общие сведения об определениях ролей. Дополнительные сведения о создании настраиваемых ролей Azure см. в разделе Настраиваемые роли Azure.

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

Ключевым преимуществом использования идентификатора Microsoft Entra с Azure Relay является то, что ваши учетные данные больше не должны храниться в коде. Вместо этого вы можете запросить токен доступа OAuth 2.0 у платформы идентификации Майкрософт. Microsoft Entra выполняет проверку подлинности субъекта безопасности (пользователя, группы или субъекта-службы). Если проверка подлинности выполнена успешно, идентификатор Microsoft Entra возвращает маркер доступа приложению, а приложение может использовать маркер доступа для авторизации запросов в Azure Relay.

В следующих разделах показано, как настроить консольное приложение для проверки подлинности с помощью платформа удостоверений Майкрософт 2.0. Дополнительные сведения см. в разделе платформа удостоверений Майкрософт (версия 2.0).

Общие сведения о потоке предоставления кода OAuth 2.0 см. в разделе "Авторизация доступа к веб-приложениям Microsoft Entra" с помощью потока предоставления кода OAuth 2.0.

Регистрация приложения в клиенте Microsoft Entra

Первым шагом в использовании идентификатора Microsoft Entra для авторизации сущностей Azure Relay является регистрация клиентского приложения в клиенте Microsoft Entra из портал Azure. Когда вы регистрируете свое клиентское приложение, вы предоставляете информацию о нем в AD. Затем идентификатор Microsoft Entra предоставляет идентификатор клиента (также называемый идентификатором приложения), который можно использовать для связывания приложения с средой выполнения Microsoft Entra.

Пошаговые инструкции по регистрации приложения с помощью идентификатора Microsoft Entra см. в кратком руководстве по регистрации приложения с помощью идентификатора Microsoft Entra.

Важно!

Запишите идентификатор каталога (клиента) и идентификатор приложения (клиента). Эти значения понадобятся вам для запуска примера приложения.

Создание секрета клиента

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

Важно!

Запишите секрет клиента. Он понадобится вам для запуска примера приложения.

Назначение ролей Azure с помощью портала Azure

Назначьте субъекту-службе приложения одну из ролей Azure Relay в нужной области (сущность Ретрансляции, пространство имен, группа ресурсов, подписка). Подробные инструкции см. в статье Назначение ролей Azure с помощью портала Microsoft Azure.

Запуск примера

  1. Скачайте пример консольного приложения из GitHub.

  2. Запустите приложение локально на компьютере согласно инструкциям из этой статьи.

    Примечание.

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

Выделенный код из примера

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

  1. Создайте объект TokenProvider с помощью метода TokenProvider.CreateAzureActiveDirectoryTokenProvider.

    Если вы еще не создали регистрацию приложения, ознакомьтесь с разделом "Регистрация приложения с помощью идентификатора Microsoft Entra ID", чтобы создать его, а затем создать секрет клиента, как упоминание в разделе "Создание секрета клиента".

    Если вы хотите использовать имеющуюся регистрацию приложения, выполните указанные инструкции, чтобы получить идентификатор приложения (клиента) и идентификатор каталога (клиента).

    1. Войдите на портал Azure.
    2. Найдите и выберите идентификатор Microsoft Entra с помощью панели поиска в верхней части.
    3. На странице идентификатора записи Майкрософт выберите Регистрация приложений в разделе "Управление" в меню слева.
    4. Выберите регистрацию вашего приложения.
    5. На странице регистрации приложения отображаются значения идентификатора приложения (клиента) и идентификатора каталога (клиента).

    Чтобы получить секрет клиента, выполните приведенные ниже действия.

    1. На странице регистрации приложения в меню слева выберите Сертификаты и секреты.
    2. Используйте кнопку "Копировать" в столбце Значение для секрета в разделе Секреты клиента.
    static TokenProvider GetAadTokenProvider(string clientId, string tenantId, string clientSecret)
    {
        return TokenProvider.CreateAzureActiveDirectoryTokenProvider(
            async (audience, authority, state) =>
            {
                IConfidentialClientApplication app = ConfidentialClientApplicationBuilder.Create(clientId)
                    .WithAuthority(authority)
                    .WithClientSecret(clientSecret)
                    .Build();
    
                var authResult = await app.AcquireTokenForClient(new [] { $"{audience}/.default" }).ExecuteAsync();
                return authResult.AccessToken;
            },
            $"https://login.microsoftonline.com/{tenantId}");
    }
    
  2. Создайте объект HybridConnectionListener или HybridConnectionClient, передав универсальный код ресурса гибридного подключения и поставщик маркеров, созданный на предыдущем шаге.

    Прослушиватель.

    var listener = new HybridConnectionListener(hybridConnectionUri, tokenProvider);    
    

    Отправитель.

    var sender = new HybridConnectionClient(hybridConnectionUri, tokenProvider);    
    

Примеры

  • Гибридные Подключение ions: .NET, Java, JavaScript
  • Ретранслятор WCF: .NET

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

Дополнительные сведения о ретрансляторе Azure см. в следующих разделах: