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

Функция конечных точек вышестоящий позволяет Служба 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-адреса вышестоящего ресурса. Screenshot of AzureSignalR Service Upstream settings.
  5. Выберите правила концентратора, чтобы открыть Параметры вышестоящего потока. Screenshot of Azure SignalR Upstream setting details.
  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))

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