Конечные точки вышестоящего потока
Функция вышестоящих конечных точек позволяет Служба Azure SignalR отправлять сообщения и события подключения в набор конечных точек в бессерверном режиме. Вы можете использовать вышестоящая конечная точка для вызова метода концентратора от клиентов в бессерверном режиме для уведомления конечных точек о подключении клиента или отключении.
Примечание.
Конечные точки upstream можно настроить только в бессерверном режиме.
Параметры вышестоящей конечной точки
Параметры вышестоящей конечной точки состоят из списка элементов с учетом порядка:
- Шаблон URL-адреса, указывающий, куда отправляются сообщения.
- Набор правил.
- Конфигурации проверки подлинности.
При срабатывании события правила элемента проверяются по одному по одному. Сообщения будут отправлены на URL-адрес вышестоящей конечной точки первого соответствующего элемента.
Параметры шаблона URL-адреса
Вы можете параметризировать URL-адрес конечной точки вышестоящего потока для поддержки различных шаблонов. Есть три предопределенных параметра:
Предопределенный параметр | Description |
---|---|
{hub} | Концентратор — это концепция Службы Azure SignalR. Концентратор — это единица изоляции. Область пользователей и доставки сообщений ограничена концентратором. |
{category} | Категория может быть одной из следующих значений:
|
{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:
Добавьте назначаемое системой удостоверение или удостоверение, назначаемое пользователем. Узнайте, как добавить управляемое удостоверение в портал Azure.
Предоставьте управляемому удостоверению разрешение на чтение секрета в политиках доступа в Key Vault. См. статью Назначение политики доступа Key Vault с помощью портала Microsoft Azure
Замените конфиденциальный текст приведенным ниже синтаксисом в шаблоне 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
Примечание.
Интеграция с Среда службы приложений в настоящее время не поддерживается.
- Перейдите к Службе Azure SignalR.
- Выберите Параметры.
- Переключение режима службы на бессерверный.
- Добавьте URL-адреса в Шаблон URL-адреса вышестоящего ресурса.
- Выберите "Правила концентратора", чтобы открыть параметры вышестоящего потока.
- Изменение правил концентратора, правил событий и правил категорий путем ввода значения правила в соответствующем поле.
- В разделе "Вышестоящей проверки подлинности" выберите
- Используйте управляемое удостоверение. (Убедитесь, что вы включили управляемое удостоверение)
- Выберите все параметры в разделе "Аудитория" в выданном токене. Подробнее см. в разделе Управляемые удостоверения для Службы 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))
Следующие шаги
- Управляемые удостоверения для Службы Azure SignalR
- Azure Functions development and configuration with Azure SignalR Service (Разработка и настройка функций Azure с помощью Службы Azure SignalR)
- Обработка сообщений от Службы Azure SignalR (привязка триггера)
- Пример привязки триггера Службы SignalR