Конечные точки вышестоящего потока

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

Примечание.

Конечные точки upstream можно настроить только в бессерверном режиме.

Параметры вышестоящей конечной точки

Параметры вышестоящей конечной точки состоят из списка элементов с учетом порядка:

  • Шаблон URL-адреса, указывающий, куда отправляются сообщения.
  • Набор правил.
  • Конфигурации проверки подлинности.

При срабатывании события правила элемента проверяются последовательно. Сообщения будут отправлены на URL-адрес вышестоящей конечной точки первого соответствующего элемента.

Параметры шаблона URL-адреса

Вы можете параметризировать URL-адрес конечной точки входящего трафика для поддержки различных шаблонов. Есть три предопределенных параметра:

Предопределенный параметр Описание
{центр} Концентратор — это понятие Службы Azure SignalR. Концентратор — это единица изоляции. Область пользователей и доставки сообщений ограничена концентратором.
{category} Категория может быть одной из следующих значений:
  • connections: события срока службы соединения. Срабатывает при подключении или отключении клиентского соединения. Включает в себя события подключения и отключения.
  • messages: инициируется, когда клиенты вызывают метод концентратора. Включает в себя все остальные события, кроме событий в категории подключений.
{event} Для категории messages событие является целью в сообщении о вызове, которое отправляют клиенты. Для категории connections используются только connected (подключено) и disconnected (отключено).

Эти предопределенные параметры можно использовать в шаблоне URL-адреса. Параметры будут заменены указанным значением при оценке URL-адреса вышестоящей конечной точки. Например:

http://host.com/{hub}/api/{category}/{event}

При подключении клиента в концентраторе "chat" сообщение будет отправлено на этот URL-адрес:

http://host.com/chat/api/connections/connected

Когда клиент в концентраторе "chat" вызывает метод концентратора broadcast, сообщение будет отправлено на этот URL-адрес:

http://host.com/chat/api/messages/broadcast

Ссылка на секрет Azure Key Vault в параметрах шаблона URL-адреса

URL-адрес вышестоящей конечной точки не шифруется. Вы можете защитить конфиденциальные конечные точки вышестоящего потока с помощью Key Vault и получить к ним доступ с помощью управляемого удостоверения.

Чтобы включить управляемое удостоверение в экземпляре службы SignalR и предоставить ней доступ к Key Vault:

  1. Добавьте удостоверение, назначенное системой, или удостоверение, назначенное пользователем. Узнайте, как добавить управляемое удостоверение в портал Azure.

  2. Предоставьте разрешение на чтение секрета для управляемого удостоверения в политиках доступа хранилища ключей (Key Vault). См. статью Назначение политики доступа Key Vault с помощью портала Microsoft Azure

  3. Замените конфиденциальный текст приведенным ниже синтаксисом в шаблоне URL-адреса вышестоящей конечной точки:

    {@Microsoft.KeyVault(SecretUri=<secret-identity>)}
    

    <secret-identity> — полный URI плоскости данных секрета в Key Vault, при необходимости включая версию, например https://myvault.vault.azure.net/secrets/mysecret/ или https://myvault.vault.azure.net/secrets/mysecret/ec96f02080254f109c51a1f14cdb1931

    Вот пример полной ссылки:

    {@Microsoft.KeyVault(SecretUri=https://myvault.vault.azure.net/secrets/mysecret/)}
    

    URL-адрес вышестоящей конечной точки функции Azure выглядит следующим образом:

    https://contoso.azurewebsites.net/runtime/webhooks/signalr?code={@Microsoft.KeyVault(SecretUri=https://myvault.vault.azure.net/secrets/mysecret/)}
    

Примечание.

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

Параметры правила

Вы можете задать правила концентратора, правила категорий и правила событий отдельно. Правило сопоставления поддерживает три формата:

  • Используйте звездочку (*) для сопоставления любого события.
  • Для объединения нескольких событий используйте запятую (,). Например, connected, disconnected сопоставляет события подключения и отключения.
  • Используйте полное имя события, чтобы сопоставить это событие. Например, connected соответствует подключенному событию.

Примечание.

Если вы используете Функции Azure с триггером SignalR, триггер SignalR будет предоставлять одну конечную точку в следующем формате: <Function_App_URL>/runtime/webhooks/signalr?code=<API_KEY> Можно просто настроить параметры шаблона URL-адреса для этого URL-адреса и использовать Параметры правил по умолчанию. См. SignalR Service integration для получения подробной информации о том, как найти и .

Параметры проверки подлинности

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

  • None
  • ManagedIdentity

При выборе ManagedIdentity необходимо сначала включить управляемое удостоверение в Службе Azure SignalR и при необходимости указать ресурс. Подробнее см. в разделе Управляемые удостоверения для Службы Azure SignalR.

Настройка параметров входящей конечной точки с помощью Портала Azure

Примечание.

Интеграция с App Service Environment в данный момент не поддерживается.

  1. Перейдите к Службе Azure SignalR.
  2. Выберите Параметры.
  3. Переключение режима службы на бессерверный.
  4. Добавьте URL-адреса в Шаблон URL-адреса вышестоящего ресурса. Снимок экрана настроек восходящего потока в Azure SignalR-службе.
  5. Выберите Правила концентратора, чтобы открыть Настройки вышестоящего подключения. Снимок экрана: параметры входящего потока Azure SignalR.
  6. Изменение правил концентратора, правил событий и правил категорий путем ввода значения правила в соответствующем поле.
  7. В разделе «Проверка подлинности на вышестоящем уровне» выберите
  8. Используйте управляемую идентичность. (Убедитесь, что вы включили управляемое удостоверение)
  9. Выберите все параметры в разделе "Аудитория" в выданном токене. Подробнее см. в разделе Управляемые удостоверения для Службы Azure SignalR.

Настройка параметров вышестоящей конечной точки с помощью шаблона Resource Manager

Чтобы настроить параметры входной конечной точки с помощью шаблона Azure Resource Manager, задайте свойство upstream в свойстве properties. В следующем фрагменте кода показано, как задать upstream свойство для создания и обновления параметров вышестоящей конечной точки.

{
  "properties": {
    "upstream": {
      "templates": [
        {
          "UrlTemplate": "http://host.com/{hub}/api/{category}/{event}",
          "EventPattern": "*",
          "HubPattern": "*",
          "CategoryPattern": "*",
          "Auth": {
            "Type": "ManagedIdentity",
            "ManagedIdentity": {
              "Resource": "<resource>"
            }
          }
        }
      ]
    }
  }
}

Бессерверные протоколы

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

Способ

ПОСТ

Заголовок запроса

Имя Описание
X-ASRS-Connection-Id Идентификатор подключения для клиентского соединения.
X-ASRS-Hub Концентратор, к которому подключено клиентское соединение.
X-ASRS-Category Категория, к которой относится сообщение.
X-ASRS-Event Событие, к которому относится сообщение.
X-ASRS-Signature Код проверки подлинности сообщения на основе хэша (HMAC), используемый для валидации. Подробнее см. в разделе Сигнатура.
X-ASRS-User-Claims Группа утверждений клиентского соединения.
X-ASRS-User-Id Удостоверение пользователя клиента, который отправляет сообщение.
X-ASRS-Client-Query Когда клиенты делают запрос, подключаясь к службе.
Проверка подлинности Опциональный токен при использовании ManagedIdentity.

Текст запроса

Подключено

Тип содержимого: application/json

Отключено

Тип содержимого: application/json

Имя Тип Описание
Ошибка строка Сообщение об ошибке закрытого соединения. Пусто, если соединения завершаются без ошибок.

Сообщение вызова

Content-Type: application/json или application/x-msgpack

Имя Тип Описание
Идентификатор вызова строка Необязательная строка, представляющая сообщение вызова. Подробнее см. в разделе Вызовы.
Цель строка Аналогично событию и целевому объекту в сообщении вызова.
Аргументы Массив объектов Массив, содержащий аргументы, применяемые к методу, на который ссылается Target.

Подпись

Служба вычислит код SHA256 для значения X-ASRS-Connection-Id, используя основной и вспомогательный ключи доступа в качестве ключа HMAC. Служба устанавливает ее в заголовке X-ASRS-Signature при выполнении HTTP-запросов к вышестоящей конечной точке:

Hex_encoded(HMAC_SHA256(accessKey, connection-id))

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