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

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

Примечание.

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

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

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

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

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

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

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

Предопределенный параметр Description
{hub} Концентратор — это концепция Службы 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-адреса и использовать Параметры правил по умолчанию. Подробнее о том, как найти <Function_App_URL> и <API_KEY>, см. в разделе Интеграция Службы Azure SignalR.

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

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

  • None
  • ManagedIdentity

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

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

Примечание.

Интеграция с Среда службы приложений в настоящее время не поддерживается.

  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 отправляет сообщения конечным точкам, которые поддерживают следующие протоколы. Вы можете использовать привязку триггера Службы Azure SignalR к приложению-функции, которая обрабатывает эти протоколы.

Способ

POST

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

Имя Описание
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.

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

Connected

Content-Type: application/json

Отключено

Content-Type: application/json

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

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

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

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

Подпись

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

Hex_encoded(HMAC_SHA256(accessKey, connection-id))

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