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


Строки подключения в Службе Azure SignalR

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

Внимание

необработанные строки подключения приведены в этой статье исключительно для демонстрации.

Строка подключения включает сведения об авторизации, необходимые приложению для доступа к службе Azure SignalR. Ключ доступа в строке подключения аналогичен паролю привилегированного пользователя для службы. В рабочих средах всегда защищать ключи доступа. Используйте Azure Key Vault для безопасного управления ключами и защиты строки подключения с помощью Microsoft Entra ID и авторизации доступа с помощью Microsoft Entra ID.

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

Что такое строка подключения

Если приложению необходимо подключиться к Служба Azure SignalR, ему потребуется следующая информация:

  • Конечная точка HTTP экземпляра службы Azure SignalR
  • Способ проверки подлинности с помощью конечной точки службы

Строка подключения содержит такие сведения.

Как выглядит строка подключения

Строка подключения состоит из ряда пар "ключ-значение", разделенных точкой с запятой (;). Строка использует знак равенства (=) для связывания каждого ключа и его значения. Ключи не учитывают регистр.

Типичная строка подключения может выглядеть следующим образом:

Endpoint=https://<resource_name>.service.signalr.net;AccessKey=<access_key>;Version=1.0;

Строка подключения содержит следующее:

  • Endpoint=https://<resource_name>.service.signalr.net: URL-адрес конечной точки ресурса.
  • AccessKey=<access_key>: ключ для проверки подлинности в службе. При указании ключа доступа в строке подключения пакет SDK службы Azure SignalR использует его для создания токена, проверяемого службой.
  • Version: версия строки подключения. Значение по умолчанию — 1.0.

В следующей таблице перечислены все допустимые имена пар "ключ-значение" в строке подключения.

Ключ. Описание Обязательное поле Значение по умолчанию Пример значения
Endpoint URL экземпляра службы Azure SignalR. Да Неприменимо https://foo.service.signalr.net
Port Порт, который используется экземпляром службы Azure SignalR для прослушивания. Нет 80 или 443в зависимости от схемы URI конечной точки 8080
Version Версия строки подключения. Нет 1.0 1.0
ClientEndpoint URI вашего обратного прокси-сервера, например, Шлюз приложений Azure или Управление API Azure. Нет null https://foo.bar
AuthType Тип проверки подлинности. По умолчанию служба используется AccessKey для авторизации запросов. Задается без учета регистра символов. Нет null Azure, azure.msi, azure.app

Используйте AccessKey

Служба использует локальный метод проверки подлинности, если AuthType задано значение null.

Ключ. Описание Обязательное поле Значение по умолчанию Пример значения
AccessKey Строка ключа в формате Base64 для создания токена доступа. Да null ABCDEFGHIJKLMNOPQRSTUVWEXYZ0123456789+=/

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

Служба использует метод проверки подлинности Microsoft Entra, если AuthType задано значение azure, azure.appили azure.msi.

Ключ. Описание Обязательное поле Значение по умолчанию Пример значения
ClientId GUID приложения Azure или удостоверения Azure. Нет null 00000000-0000-0000-0000-000000000000
TenantId GUID организации в идентификаторе Microsoft Entra. Нет null 00000000-0000-0000-0000-000000000000
ClientSecret Пароль экземпляра приложения Azure. Нет null ***********************.****************
ClientCertPath Абсолютный путь файла сертификата клиента к экземпляру приложения Azure. Нет null /usr/local/cert/app.cert

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

Как получить строки подключения

Можно использовать портал Azure или Azure CLI, чтобы получить строки подключения.

Портал Azure

Откройте ресурс Служба SignalR Azure в портале Azure. На вкладке "Ключи" показаны две строка подключения (первичная и вторичная) в следующем формате:

Endpoint=https://<resource_name>.service.signalr.net;AccessKey=<access_key>;Version=1.0;

Azure CLI

az signalr key list -g <resource_group> -n <resource_name>

Подключение к приложению Microsoft Entra

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

Чтобы использовать проверку подлинности Microsoft Entra, необходимо удалить AccessKey из строка подключения и добавитьAuthType=azure.app. Кроме того, необходимо указать учетные данные приложения Microsoft Entra, включая идентификатор клиента, секрет клиента и идентификатор клиента. Строка подключения выглядит следующим образом:

Endpoint=https://<resource_name>.service.signalr.net;AuthType=azure.app;ClientId=<client_id>;ClientSecret=<client_secret>;TenantId=<tenant_id>;Version=1.0;

Дополнительные сведения о проверке подлинности с помощью приложения Microsoft Entra см. в разделе "Авторизация запросов к ресурсам SignalR" с помощью приложений Microsoft Entra.

Произведите аутентификацию с использованием управляемого удостоверения

Управляемое удостоверение (системой или пользователем назначаемое) можно использовать для аутентификации в Службой Azure SignalR.

Чтобы использовать назначаемое системой удостоверение, добавьте AuthType=azure.msi в строке подключения.

Endpoint=https://<resource_name>.service.signalr.net;AuthType=azure.msi;Version=1.0;

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

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

Endpoint=https://<resource_name>.service.signalr.net;AuthType=azure.msi;ClientId=<client_id>;Version=1.0;

Дополнительные сведения о настройке управляемых удостоверений см. в статье "Авторизация запросов к ресурсам SignalR" с помощью управляемых удостоверений Microsoft Entra.

Примечание.

Настоятельно рекомендуется использовать управляемые удостоверения для проверки подлинности с помощью Служба Azure SignalR, так как они более безопасны, чем ключи доступа. Если вы не используете ключи доступа для проверки подлинности, рассмотрите возможность полностью отключить их в портале Azure (выберите ключи>Ключ доступа>Отключить).

Если вы решите использовать ключи доступа, рекомендуется регулярно поворачивать их. Дополнительные сведения см. в разделе "Смена ключей доступа" для Служба Azure SignalR.

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

Ручное создание строк подключения может быть громоздким и ошибочным. Чтобы избежать ошибок, Служба Azure SignalR предоставляет генератор строк подключения для создания строки подключения, включающей удостоверения Microsoft Entra, как clientId и tenantId. Чтобы использовать средство, откройте экземпляр Службы Azure SignalR в портале Azure и выберите Строки подключения в меню слева.

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

На этой странице можно выбрать один из типов проверки подлинности (ключ доступа, управляемое удостоверение или приложение Microsoft Entra) и ввести такие сведения, как конечная точка клиента, идентификатор клиента и секрет клиента. Затем автоматически создается строка подключения. Его можно скопировать и использовать в приложении.

Примечание.

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

Для получения дополнительной информации о том, как создаются и проверяются маркеры доступа, см. раздел «Аутентификация с помощью маркера Microsoft Entra» в справочнике по REST API Службы Azure SignalR для передачи данных.

Предоставление конечных точек клиента и сервера

Строка подключения содержит HTTP-адрес для сервера приложений, чтобы подключиться к службе Azure SignalR. Сервер возвращает конечную точку HTTP клиентам в ответе на переговоры, чтобы клиент смог подключиться к службе.

В некоторых приложениях перед службой Azure SignalR может быть дополнительный компонент. Сначала все клиентские подключения должны пройти через этот компонент. Например, Шлюз приложений Azure — это общая служба, которая обеспечивает дополнительную сетевую безопасность.

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

Endpoint=https://<resource_name>.service.signalr.net;AccessKey=<access_key>;ClientEndpoint=https://<url_to_app_gateway>;Version=1.0;

Сервер приложений возвращает ответ на запрос на согласование клиента. Ответ содержит правильный URL-адрес конечной точки для подключения клиента. Дополнительные сведения о клиентских подключениях см. в разделе внутреннее устройство службы Azure SignalR.

Аналогичным образом, если сервер пытается подключить сервер или вызвать REST API в службу, Служба Azure SignalR также может находиться за другой службой, например Шлюз приложений Azure. В этом случае можно указать ServerEndpoint фактическую конечную точку для подключений к серверу и REST API:

Endpoint=https://<resource_name>.service.signalr.net;AccessKey=<access_key>;ServerEndpoint=https://<url_to_app_gateway>;Version=1.0;

Настройте строку подключения в вашем приложении

В этой статье приведены необработанные строки подключения только для демонстрационных целей. В рабочих средах всегда защищать ключи доступа. Используйте Azure Key Vault для безопасного управления ключами и защиты строки подключения с помощью Microsoft Entra ID и авторизации доступа с помощью Microsoft Entra ID.

Существует два способа настройки строки подключения вашего приложения.

Вы можете задать строку подключения при вызове AddAzureSignalR() API.

services.AddSignalR().AddAzureSignalR("<connection_string>");

Или можно вызывать AddAzureSignalR() без каких-либо аргументов. Пакет SDK службы возвращает строку подключения из конфигурации, названной Azure:SignalR:ConnectionString, в вашем поставщике конфигурации.

В локальной среде разработки конфигурация хранится в файле (appsettings.json или secrets.json) или в переменных среды. Для настройки строки подключения можно использовать один из следующих способов:

  • Используйте диспетчер секретов .NET (dotnet user-secrets set Azure:SignalR:ConnectionString "<connection_string>").
  • Установите переменную среды с именем Azure__SignalR__ConnectionString в значение строки подключения. Двоеточия необходимо заменить двойным подчеркиванием в поставщике конфигурации переменной среды.

В рабочей среде можно использовать другие службы Azure для управления конфигурациями и секретами, такими как Azure Key Vault и Конфигурация приложений. Сведения о настройке поставщика конфигурации для этих служб см. в документации.

Примечание.

Даже если вы напрямую задаете строку подключения с помощью кода, мы не рекомендуем жестко кодировать строку подключения в исходном коде. Вместо этого используйте строку подключения из секретного хранилища, например Key Vault, и передайте её в AddAzureSignalR().

Настроить несколько строк подключения

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

Существует два способа настройки нескольких экземпляров:

  • С помощью кода:

    services.AddSignalR().AddAzureSignalR(options =>
        {
            options.Endpoints = new ServiceEndpoint[]
            {
                new ServiceEndpoint("<connection_string_1>", name: "name_a"),
                new ServiceEndpoint("<connection_string_2>", name: "name_b", type: EndpointType.Primary),
                new ServiceEndpoint("<connection_string_3>", name: "name_c", type: EndpointType.Secondary),
            };
        });
    

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

  • С помощью конфигурации:

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

    dotnet user-secrets set Azure:SignalR:ConnectionString:name_a <connection_string_1>
    dotnet user-secrets set Azure:SignalR:ConnectionString:name_b:primary <connection_string_2>
    dotnet user-secrets set Azure:SignalR:ConnectionString:name_c:secondary <connection_string_3>
    

    Имя и тип можно назначить каждой конечной точке с помощью другого имени конфигурации в следующем формате:

    Azure:SignalR:ConnectionString:<name>:<type>