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


Авторизация запросов на Служба Azure SignalR ресурсов с помощью управляемых удостоверений Microsoft Entra

Служба Azure SignalR поддерживает идентификатор Microsoft Entra для авторизации запросов из Управляемые удостоверения Microsoft Entra.

В этой статье показано, как настроить ресурс Служба Azure SignalR и код для авторизации запросов к ресурсу из управляемого удостоверения.

Настройка управляемых удостоверений

Первым шагом является настройка управляемых удостоверений.

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

  1. Доступ к параметрам приложения в портал Azure в группе "Параметры" в области навигации слева.

  2. Выберите Удостоверение.

  3. На вкладке Назначено системой для параметра Состояние установите значение Вкл. Нажмите кнопку Сохранить.

    Снимок экрана, показывающий, где следует переключить состояние в положение

Дополнительные сведения о настройке управляемых удостоверений для службы приложение Azure и Функции Azure см. в статье "Использование управляемых удостоверений для Служба приложений и Функции Azure".

Дополнительные сведения о настройке управляемых удостоверений на виртуальной машине Azure см. в статье "Настройка управляемых удостоверений на виртуальных машинах Azure"

Добавление назначений ролей в портал Azure

Ниже описано, как назначить роль сервера приложений SignalR на назначенное системой удостоверение через ресурс Служба Azure SignalR. Подробные инструкции см. в статье Назначение ролей Azure с помощью портала Microsoft Azure.

Примечание.

Роль можно назначить любой области, включая группу управления, подписку, группу ресурсов или один ресурс. Дополнительные сведения о области см. в статье "Общие сведения о области azure RBAC".

  1. В портал Azure перейдите к ресурсу Служба Azure SignalR.

  2. Выберите Управление доступом (IAM).

  3. Выберите Добавить>Добавить назначение ролей.

    Снимок экрана: страница управления доступом и выбора для добавления назначения ролей.

  4. На вкладке "Роль" выберите "Сервер приложений SignalR".

  5. На вкладке "Участники" выберите управляемое удостоверение и выберите "Выбрать участников".

  6. Выберите свою подписку Azure.

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

  8. Чтобы назначить роль, на вкладке Проверка и назначение выберите Проверка и назначение.

Внимание

Для распространения назначений ролей Azure может потребоваться до 30 минут.

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

Настройка приложения

Сервер приложений

Использование назначаемого системой удостоверения

Пакет SDK Azure SignalR поддерживает строка подключения на основе удостоверений. Если конфигурация задана в переменных среды сервера приложений, вам не нужно повторно развернуть сервер приложений, а просто изменить конфигурацию для миграции с ключа доступа на MSI. Например, обновите переменную Azure__SignalR__ConnectionString среды сервера приложений до Endpoint=https://<resource1>.service.signalr.net;AuthType=azure.msi;Version=1.0;. Или задайте в коде DI.

services.AddSignalR().AddAzureSignalR("Endpoint=https://<resource1>.service.signalr.net;AuthType=azure.msi;Version=1.0;");

Кроме того, можно использовать DefaultAzureCredential или ManagedIdentityCredential для настройки конечных точек Служба Azure SignalR. Рекомендуется использовать ManagedIdentityCredential напрямую.

Обратите внимание, что управляемое удостоверение, назначаемое системой, используется по умолчанию, но убедитесь, что при использовании DefaultAzureCredentialне настроены какие-либо переменные среды, сохраненные в СредеCredential. В противном случае Служба Azure SignalR возвращается для EnvironmentCredential выполнения запроса, что обычно приводит к ответуUnauthorized.

Внимание

Если Azure__SignalR__ConnectionString он находится в переменных среды, удалите его. Если переменная среды будет иметь приоритет и будет использоваться для сборки по умолчанию ServiceEndpoint, что может привести к неожиданному использованию ключа доступа сервера приложений.

services.AddSignalR().AddAzureSignalR(option =>
{
    option.Endpoints = new ServiceEndpoint[]
    {
        new ServiceEndpoint(new Uri("https://<resource1>.service.signalr.net"), new ManagedIdentityCredential()),
    };
});

Использование удостоверения, назначаемого пользователем

Укажите ClientId при создании ManagedIdentityCredential объекта.

Внимание

Используйте идентификатор клиента, а не идентификатор объекта (субъекта), даже если они оба идентификатора GUID.

Используйте строка подключения на основе удостоверений.

services.AddSignalR().AddAzureSignalR("Endpoint=https://<resource1>.service.signalr.net;AuthType=azure.msi;ClientId=<your-user-identity-client-id>;Version=1.0;");

Или выполните сборку ServiceEndpoint с ManagedIdentityCredentialпомощью .

services.AddSignalR().AddAzureSignalR(option =>
{
    option.Endpoints = new ServiceEndpoint[]
    {
        var clientId = "<your-user-identity-client-id>";
        new ServiceEndpoint(new Uri("https://<resource1>.service.signalr.net"), new ManagedIdentityCredential(clientId)),
    };
});

привязки Служба Azure SignalR в Функции Azure

Служба Azure SignalR привязки в Функции Azure использовать параметры приложения на портале или локально local.settings.json для настройки управляемого удостоверения для доступа к ресурсам Служба Azure SignalR.

Для настройки удостоверения может потребоваться группа пар "ключ-значение". Ключи всех пар "ключ-значение" должны начинаться с префикса имени подключения (который по умолчанию используется AzureSignalRConnectionString) и разделителя. Разделитель — это подчеркивание (__) на портале и двоеточие (:) локально. Префикс можно настроить с помощью свойства ConnectionStringSettingпривязки.

Использование назначаемого системой удостоверения

Если вы настроите только URI службы, используйте DefaultAzureCredential этот класс. Этот класс полезен, если вы хотите совместно использовать ту же конфигурацию в Azure и локальных средах разработки. Сведения о том, как это работает, см. в разделе DefaultAzureCredential.

В портал Azure используйте следующий пример для настройкиDefaultAzureCredential. Если вы не настраиваете ни одну из этих переменных среды, удостоверение, назначаемое системой, используется для проверки подлинности.

<CONNECTION_NAME_PREFIX>__serviceUri=https://<SIGNALR_RESOURCE_NAME>.service.signalr.net

Ниже приведен пример DefaultAzureCredential конфигурации в файле local.settings.json . В локальной области нет управляемого удостоверения. Проверка подлинности с помощью Visual Studio, Azure CLI и учетных записей Azure PowerShell выполняется по порядку.

{
  "Values": {
    "<CONNECTION_NAME_PREFIX>:serviceUri": "https://<SIGNALR_RESOURCE_NAME>.service.signalr.net"
  }
}

Если вы хотите использовать назначаемое системой удостоверение независимо и без влияния других переменных среды, задайте credential для ключа префикс managedidentityимени подключения. Ниже приведен пример параметров приложения:

<CONNECTION_NAME_PREFIX>__serviceUri = https://<SIGNALR_RESOURCE_NAME>.service.signalr.net
<CONNECTION_NAME_PREFIX>__credential = managedidentity

Использование удостоверения, назначаемого пользователем

Если вы хотите использовать удостоверение, назначаемое пользователем, необходимо назначить clientId в дополнение к serviceUri ключам префикс credential имени подключения. Ниже приведен пример параметров приложения:

<CONNECTION_NAME_PREFIX>__serviceUri = https://<SIGNALR_RESOURCE_NAME>.service.signalr.net
<CONNECTION_NAME_PREFIX>__credential = managedidentity
<CONNECTION_NAME_PREFIX>__clientId = <CLIENT_ID>

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

См. следующие статьи по этой теме: