Upstreamové koncové body
Funkce upstreamových koncových bodů umožňuje službě Azure SignalR odesílat zprávy a události připojení do sady koncových bodů v bezserverovém režimu. Upstreamové koncové body můžete použít k vyvolání metody rozbočovače z klientů v bezserverovém režimu k upozorňovat koncové body při připojení nebo odpojení připojení klienta.
Poznámka:
Upstreamové koncové body je možné konfigurovat pouze v bezserverovém režimu.
Nastavení upstreamových koncových bodů
Nastavení upstreamového koncového bodu se skládá ze seznamu položek citlivých na pořadí:
- Šablona adresy URL, která určuje, kam se zprávy odesílají.
- Sada pravidel.
- Konfigurace ověřování.
Když se aktivuje událost, pravidla položky se kontrolují po jedné po druhé v pořadí. Zprávy se odešlou na adresu URL prvního nadřazeného koncového bodu odpovídající položky.
Nastavení šablony adresy URL
Pokud chcete podporovat různé vzory, můžete parametrizovat adresu URL upstreamového koncového bodu. Existují tři předdefinované parametry:
Předdefinovaný parametr | Popis |
---|---|
{hub} | Centrum je koncept služby Azure SignalR Service. Centrum je jednotka izolace. Rozsah uživatelů a doručování zpráv je omezený na centrum. |
{category} | Kategorie může být jedna z následujících hodnot:
|
{event} | Pro kategorii zpráv je událost cílem ve zprávě vyvolání, kterou klienti odesílají. Pro kategorii připojení se používají pouze připojené a odpojené. |
Tyto předdefinované parametry lze použít ve vzoru adresy URL. Parametry budou při vyhodnocování adresy URL nadřazeného koncového bodu nahrazeny zadanou hodnotou. Příklad:
http://host.com/{hub}/api/{category}/{event}
Když je připojení klienta v centru chatu, odešle se na tuto adresu URL zpráva:
http://host.com/chat/api/connections/connected
Když klient v centru chatu vyvolá metodu broadcast
centra, odešle se na tuto adresu URL zpráva:
http://host.com/chat/api/messages/broadcast
Referenční informace ke tajným kódům služby Key Vault v nastavení šablony adresy URL
Adresa URL nadřazeného koncového bodu není šifrovaná. Citlivé upstreamové koncové body můžete zabezpečit pomocí služby Key Vault a přistupovat k nim pomocí spravované identity.
Povolení spravované identity v instanci služby SignalR a udělení přístupu ke službě Key Vault:
Přidejte identitu přiřazenou systémem nebo identitu přiřazenou uživatelem. Přečtěte si, jak přidat spravovanou identitu na webu Azure Portal.
Udělte oprávnění ke čtení tajných kódů pro spravovanou identitu v zásadách přístupu ve službě Key Vault. Viz Přiřazení zásad přístupu ke službě Key Vault pomocí webu Azure Portal
V vzoru adresy URL upstreamového koncového bodu nahraďte citlivý text následující syntaxí:
{@Microsoft.KeyVault(SecretUri=<secret-identity>)}
<secret-identity>
je úplný identifikátor URI roviny dat tajného kódu ve službě Key Vault, volitelně včetně verze, https://myvault.vault.azure.net/secrets/mysecret/ např. https://myvault.vault.azure.net/secrets/mysecret/ec96f02080254f109c51a1f14cdb1931Například úplný odkaz by vypadal takto:
{@Microsoft.KeyVault(SecretUri=https://myvault.vault.azure.net/secrets/mysecret/)}
Adresa URL upstreamového koncového bodu do funkce Azure Functions by vypadala takto:
https://contoso.azurewebsites.net/runtime/webhooks/signalr?code={@Microsoft.KeyVault(SecretUri=https://myvault.vault.azure.net/secrets/mysecret/)}
Poznámka:
Každých 30 minut nebo pokaždé, když se změní nastavení nadřazeného koncového bodu nebo spravovaná identita, služba přečte obsah tajného kódu. Aktualizaci můžete okamžitě aktivovat změnou nastavení upstreamového koncového bodu.
Nastavení pravidel
Pravidla centra, pravidla kategorií a pravidla událostí můžete nastavit samostatně. Odpovídající pravidlo podporuje tři formáty:
- Použijte hvězdičku (*) ke shodě s libovolnou událostí.
- K připojení více událostí použijte čárku (,).
connected, disconnected
Například odpovídá připojeným a odpojeným událostem. - Použijte úplný název události, aby se shodovaly s událostí. Například
connected
odpovídá připojené události.
Poznámka:
Pokud používáte Azure Functions s triggerem SignalR, trigger SignalR zveřejní jeden koncový bod v následujícím formátu: <Function_App_URL>/runtime/webhooks/signalr?code=<API_KEY>
Stačí nakonfigurovat nastavení šablony adresy URL pro tuto adresu URL a ponechat výchozí nastavení pravidla. Podrobnosti o tom, jak najít a najít<Function_App_URL>
, <API_KEY>
najdete v tématu Integrace služby SignalR Service.
Nastavení ověřování
Ověřování pro každé nastavení nadřazeného koncového bodu můžete nakonfigurovat samostatně. Při konfiguraci ověřování se v hlavičce nadřazené zprávy nastaví Authentication
token. Služba Azure SignalR v současné době podporuje následující typy ověřování:
None
ManagedIdentity
Když vyberete ManagedIdentity
možnost , musíte nejprve povolit spravovanou identitu ve službě Azure SignalR a volitelně zadat prostředek. Podrobnosti najdete v tématu Spravované identity pro službu Azure SignalR Service .
Konfigurace nastavení upstreamového koncového bodu prostřednictvím webu Azure Portal
Poznámka:
Integrace se službou App Service Environment se v současné době nepodporuje.
- Přejděte do služby Azure SignalR.
- Vyberte Nastavení.
- Přepněte režim služby na bezserverovou verzi.
- Přidejte adresy URL pod vzor upstreamové adresy URL.
- Výběrem pravidel centra otevřete upstreamová nastavení.
- Změňte pravidla centra, pravidla událostí a pravidla kategorií zadáním hodnoty pravidla do odpovídajícího pole.
- V části Upstream Authentication select
- Použijte spravovanou identitu. (Ujistěte se, že jste povolili spravovanou identitu.
- Zvolte všechny možnosti v části Cílová skupina v vydaném tokenu. Podrobnosti najdete v tématu Spravované identity pro službu Azure SignalR Service .
Konfigurace nastavení upstreamového koncového bodu prostřednictvím šablony Resource Manageru
Pokud chcete nakonfigurovat upstreamová nastavení koncového bodu pomocí šablony Azure Resource Manageru, nastavte upstream
vlastnost ve properties
vlastnosti. Následující fragment kódu ukazuje, jak nastavit upstream
vlastnost pro vytváření a aktualizaci nastavení nadřazeného koncového bodu.
{
"properties": {
"upstream": {
"templates": [
{
"UrlTemplate": "http://host.com/{hub}/api/{category}/{event}",
"EventPattern": "*",
"HubPattern": "*",
"CategoryPattern": "*",
"Auth": {
"Type": "ManagedIdentity",
"ManagedIdentity": {
"Resource": "<resource>"
}
}
}
]
}
}
}
Bezserverové protokoly
Služba Azure SignalR odesílá zprávy do koncových bodů, které se řídí následujícími protokoly. Můžete použít vazbu triggeru služby SignalR Service s aplikací funkcí, která tyto protokoly zpracovává za vás.
metoda
POST
Hlavička požadavku
Název | Popis |
---|---|
ID připojení X-ASRS | ID připojení pro připojení klienta. |
X-ASRS-Hub | Centrum, ke kterému patří připojení klienta. |
Kategorie X-ASRS | Kategorie, do které zpráva patří. |
Událost X-ASRS | Událost, do které zpráva patří. |
Podpis X-ASRS | Ověřovací kód (HMAC) založený na hodnotě hash, který se používá k ověřování. Podrobnosti najdete v části Podpis . |
X-ASRS-User-Claims | Skupina deklarací identity připojení klienta. |
X-ASRS-User-ID | Identita uživatele klienta, který zprávu odešle. |
X-ASRS-Client-Query | Dotaz požadavku, když se klienti připojují ke službě. |
Ověřování | Volitelný token, když používáte ManagedIdentity . |
Text požadavku
Připojeno
Typ obsahu: application/json
Odpojeno
Typ obsahu: application/json
Name | Typ | Popis |
---|---|---|
Chyba | string | Chybová zpráva uzavřeného připojení. Prázdné, když se připojení zavřou bez chyby. |
Vyvolání zprávy
Typ obsahu: application/json
nebo application/x-msgpack
Name | Typ | Popis |
---|---|---|
InvocationId | string | Volitelný řetězec, který představuje vyvolání zprávy. Podrobnosti najdete v vyvolání. |
Cíl | string | Stejná jako událost a stejná jako cíl ve zprávě vyvolání. |
Argumenty | Pole objektu | Matice obsahující argumenty, které se mají použít na metodu uvedenou v Target . |
Podpis
Služba vypočítá kód SHA256 pro X-ASRS-Connection-Id
hodnotu pomocí primárního přístupového klíče i sekundárního přístupového HMAC
klíče jako klíče. Služba ji nastaví v X-ASRS-Signature
hlavičce při provádění požadavků HTTP na upstreamový koncový bod:
Hex_encoded(HMAC_SHA256(accessKey, connection-id))