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


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

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

Внимание

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

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

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

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

Если приложению необходимо подключиться к Служба 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.

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

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

Использование AccessKey

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

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

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

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

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

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

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

Для получения строка подключения можно использовать портал Azure или Azure CLI.

Портал Azure

Откройте ресурс Служба Azure SignalR в портал 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 и авторизации доступа с помощью идентификатора Microsoft Entra.

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

Вы можете задать строка подключения при вызове 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>