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


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

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

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

Регистрация приложения

Первым шагом является регистрация приложения Microsoft Entra:

  1. В портал Azure найдите и выберите идентификатор Microsoft Entra.

  2. В разделе Управление выберите Регистрация приложений.

  3. Выберите Создать регистрацию. Откроется область регистрации приложения .

    Снимок экрана: панель регистрации приложения.

  4. В поле "Имя" введите отображаемое имя приложения.

  5. Нажмите кнопку "Регистрация", чтобы подтвердить регистрацию.

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

Снимок экрана: общие сведения о зарегистрированном приложении.

Дополнительные сведения о регистрации приложения см. в кратком руководстве по регистрации приложения с помощью платформа удостоверений Майкрософт.

Добавить учетные данные

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

Секрет клиента

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

  1. В разделе Управление выберите Сертификаты и секреты.

  2. На вкладке Секреты клиента выберите Новый секрет клиента.

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

  3. Введите описание секрета клиента и выберите время окончания срока действия.

  4. Скопируйте значение секрета клиента и вставьте его в безопасное расположение.

    Примечание.

    Секрет отображается только один раз.

Сертификат

Вместо создания секрета клиента можно отправить сертификат.

Снимок экрана: выбор для отправки сертификата.

Дополнительные сведения о добавлении учетных данных см. в статье "Добавление учетных данных".

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

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

Примечание.

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

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

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

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

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

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

  5. На вкладке "Участники" выберите "Пользователь", "Группа" или "Субъект-служба", а затем выберите "Выбрать участников".

  6. Найдите и выберите приложение, которому нужно назначить роль.

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

Внимание

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

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

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

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

Рекомендуется настроить удостоверение и учетные данные в переменных среды:

«Переменная» Description
AZURE_TENANT_ID Идентификатор клиента Microsoft Entra.
AZURE_CLIENT_ID Идентификатор клиента (приложения) для регистрации приложения в клиенте.
AZURE_CLIENT_SECRET Секрет клиента, созданный для регистрации приложения.
AZURE_CLIENT_CERTIFICATE_PATH Путь к паре сертификатов и закрытого ключа в формате PEM или PFX, который может пройти проверку подлинности регистрации приложения.
AZURE_USERNAME Имя пользователя, также известное как имя участника-пользователя (UPN) учетной записи пользователя Microsoft Entra.
AZURE_PASSWORD Пароль учетной записи пользователя Microsoft Entra. Пароль не поддерживается для учетных записей с включенной многофакторной проверкой подлинности.

Для настройки конечных точек Служба Azure SignalR можно использовать DefaultAzureCredential или EnvironmentCredential. Ниже приведен код для DefaultAzureCredential:

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

Ниже приведен код для EnvironmentCredential:

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

Сведения о DefaultAzureCredential работе см. в разделе "Класс DefaultAzureCredential".

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

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

В этом сценарии можно использовать ClientSecretCredential или ClientCertificateCredential:

services.AddSignalR().AddAzureSignalR(option =>
{
    var credential1 = new ClientSecretCredential("tenantId", "clientId", "clientSecret");
    var credential2 = new ClientCertificateCredential("tenantId", "clientId", "pathToCert");

    option.Endpoints = new ServiceEndpoint[]
    {
        new ServiceEndpoint(new Uri("https://<resource1>.service.signalr.net"), credential1),
        new ServiceEndpoint(new Uri("https://<resource2>.service.signalr.net"), credential2),
    };
});

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

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

Сначала необходимо указать URI службы Служба Azure SignalR. Ключом URI службы является serviceUri. Он начинается с префикса имени подключения (который по умолчанию используется AzureSignalRConnectionString) и разделителя. Разделитель — это подчеркивание (__) в портал Azure и двоеточие (:) в файле local.settings.json. Имя подключения можно настроить с помощью свойства ConnectionStringSettingпривязки. Продолжайте чтение, чтобы найти пример.

Затем вы можете настроить удостоверение приложения Microsoft Entra в предопределенных переменных среды или в указанных переменных SignalR.

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

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

Например, чтобы использовать учетные данные секрета клиента, настройте удостоверение следующим образом в файле local.settings.json :

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

В портал Azure добавьте следующие параметры:

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

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

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

  • clientId
  • clientSecret
  • tenantId

Ниже приведены примеры использования учетных данных секрета клиента в файле local.settings.json :

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

В портал Azure добавьте следующие параметры:

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

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

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