Upstream-Endpunkte
Das Feature für upstream-Endpunkte ermöglicht azure SignalR Service das Senden von Nachrichten und Verbindungsereignissen an eine Reihe von Endpunkten im serverlosen Modus. Sie können upstream-Endpunkte verwenden, um eine Hubmethode von Clients im serverlosen Modus aufzurufen, um Endpunkte zu benachrichtigen, wenn Clientverbindungen verbunden oder getrennt sind.
Hinweis
Upstream-Endpunkte können nur im serverlosen Modus konfiguriert werden.
Einstellungen für upstream-Endpunkte
Die Einstellungen eines upstream-Endpunkts bestehen aus einer Liste von sortierten vertraulichen Elementen:
- Eine URL-Vorlage, die angibt, wohin Nachrichten gesendet werden
- Eine Reihe von Regeln
- Authentifizierungskonfigurationen
Wenn ein Ereignis ausgelöst wird, werden die Regeln eines Elements nacheinander überprüft. Nachrichten werden an die upstream-Endpunkt-URL des ersten übereinstimmenden Elements gesendet.
URL-Vorlageneinstellungen
Sie können die upstream-Endpunkt-URL parametrisieren, um verschiedene Muster zu unterstützen. Es gibt drei vordefinierte Parameter:
Vordefinierter Parameter | Beschreibung |
---|---|
{hub} | Ein Hub ist ein Konzept von Azure SignalR Service. Ein Hub ist eine Isolationseinheit. Der Bereich der Benutzer und der Nachrichtenübermittlung ist auf einen Hub beschränkt. |
{category} | Eine Kategorie kann eine der folgenden Werte sein:
|
{event} | Für die Kategorie messages ist ein Ereignis das Ziel in der Aufrufnachricht, die Clients senden. Für die Kategorie connections werden nur connected und disconnected verwendet. |
Diese vordefinierten Parameter können im URL-Muster verwendet werden. Parameter werden beim Auswerten der upstream-Endpunkt-URL durch einen angegebenen Wert ersetzt. Beispiel:
http://host.com/{hub}/api/{category}/{event}
Wenn eine Clientverbindung im „chat“-Hub verbunden ist, wird eine Nachricht an diese URL gesendet:
http://host.com/chat/api/connections/connected
Wenn ein Client im „chat“-Hub die Hubmethode broadcast
aufruft, wird eine Nachricht an diese URL gesendet:
http://host.com/chat/api/messages/broadcast
Verweis auf Key Vault-Geheimnis in den URL-Vorlageneinstellungen
Die upstream-Endpunkt-URL ist nicht verschlüsselt. Sie können sensible upstream-Endpunkte mithilfe von Key Vault schützen und mit einer verwalteten Identität darauf zugreifen.
So aktivieren Sie die verwaltete Identität in Ihrer SignalR-Dienstinstanz, und gewähren Sie ihm Key Vault-Zugriff:
Fügen Sie eine systemseitig oder benutzerseitig zugewiesene Identität hinzu. Informationen zum Hinzufügen von verwalteter Identität in Azure-Portal.
Erteilen Sie der verwalteten Identität in den Zugriffsrichtlinien im Key Vault Leseberechtigung. Weitere Informationen finden Sie unter Zuweisen einer Key Vault-Zugriffsrichtlinie über das Azure-Portal.
Ersetzen Sie Den vertraulichen Text durch die folgende Syntax im vorgelagerten Endpunkt-URL-Muster:
{@Microsoft.KeyVault(SecretUri=<secret-identity>)}
<secret-identity>
ist der vollständige URI der Datenebene eines Geheimnisses in Key Vault, optional einschließlich einer Version, z. B. https://myvault.vault.azure.net/secrets/mysecret/ oder https://myvault.vault.azure.net/secrets/mysecret/ec96f02080254f109c51a1f14cdb1931.Ein vollständiger Verweis kann beispielsweise wie folgt aussehen:
{@Microsoft.KeyVault(SecretUri=https://myvault.vault.azure.net/secrets/mysecret/)}
Eine vorgelagerte Endpunkt-URL zu Azure Function würde wie folgt aussehen:
https://contoso.azurewebsites.net/runtime/webhooks/signalr?code={@Microsoft.KeyVault(SecretUri=https://myvault.vault.azure.net/secrets/mysecret/)}
Hinweis
Alle 30 Minuten oder jedes Mal, wenn sich die Einstellungen des upstream-Endpunkts oder die verwaltete Identität ändern, liest der Dienst den geheimen Inhalt neu. Sie können ein Update sofort auslösen, indem Sie die Einstellungen des upstream-Endpunkts ändern.
Regeleinstellungen
Sie können Hubregeln, Kategorieregeln und Ereignisregeln separat festlegen. Die Übereinstimmungsregel unterstützt drei Formate:
- Verwenden Sie ein Sternchen (*) für jedes Ereignis.
- Verwenden Sie ein Komma (,), um mehrere Ereignisse zu verknüpfen. Beispielsweise entspricht
connected, disconnected
den verbundenen und nicht verbundenen Ereignissen. - Verwenden Sie den vollständigen Namen des Ereignisses, um das Ereignis abzugleichen. Beispielsweise entspricht
connected
dem verbundenen Ereignis.
Hinweis
Wenn Sie Azure-Funktionen mit SignalR-Trigger verwenden, macht der SignalR-Trigger einen einzelnen Endpunkt im folgenden Format verfügbar: <Function_App_URL>/runtime/webhooks/signalr?code=<API_KEY>
Sie können einfach URL-Vorlageneinstellungen mit dieser URL konfigurieren und für die Regeleinstellungen die Standardwerte beibehalten. Ausführliche Informationen zum Finden von <Function_App_URL>
und <API_KEY>
finden Sie unter SignalR Service-Integration.
Authentifizierungseinstellungen
Sie können die Authentifizierung für jede vorgelagerte Endpunkteinstellung separat konfigurieren. Wenn Sie die Authentifizierung konfigurieren, wird ein Token im Authentication
-Header der Upstreamnachricht festgelegt. Derzeit unterstützt Azure SignalR Service die folgenden Authentifizierungstypen:
None
ManagedIdentity
Wenn Sie auswählen ManagedIdentity
, müssen Sie zuerst eine verwaltete Identität im Azure SignalR-Dienst aktivieren und optional eine Ressource angeben. Weitere Informationen finden Sie unter Verwaltete Identitäten für Azure SignalR Service.
Konfigurieren der Einstellungen für vorgelagerte Endpunkte über die Azure-Portal
Hinweis
Die Integration in App Service-Umgebung wird derzeit nicht unterstützt.
- Wechseln Sie zu Azure SignalR Service.
- Wählen Sie Einstellungen aus.
- Wechseln Des Dienstmodus auf Serverless.
- Fügen Sie unter Upstream-URL-Muster URLs hinzu.
- Wählen Sie Hubregeln aus, um upstream-Einstellungen zu öffnen.
- Ändern Sie Hubregeln, Ereignisregeln und Kategorieregeln, indem Sie den Regelwert in das entsprechende Feld eingeben.
- Wählen Sie unter "Upstream-Authentifizierung "
- Verwenden Sie verwaltete Identität. (Stellen Sie sicher, dass Sie die verwaltete Identität aktiviert haben)
- Wählen Sie alle Optionen unter "Zielgruppe" im ausgestellten Token aus. Weitere Informationen finden Sie unter Verwaltete Identitäten für Azure SignalR Service.
Konfigurieren von Upstream-Endpunkteinstellungen über die Ressourcen-Manager-Vorlage
Legen Sie die Eigenschaft in der upstream
properties
Eigenschaft fest, um upstream-Endpunkteinstellungen mithilfe einer Azure Resource Manager-Vorlage zu konfigurieren. Der folgende Codeausschnitt zeigt, wie Sie die upstream
Eigenschaft zum Erstellen und Aktualisieren der Einstellungen für vorgelagerte Endpunkte festlegen.
{
"properties": {
"upstream": {
"templates": [
{
"UrlTemplate": "http://host.com/{hub}/api/{category}/{event}",
"EventPattern": "*",
"HubPattern": "*",
"CategoryPattern": "*",
"Auth": {
"Type": "ManagedIdentity",
"ManagedIdentity": {
"Resource": "<resource>"
}
}
}
]
}
}
}
Serverlose Protokolle
Azure SignalR Service sendet Nachrichten an Endpunkte, die den folgenden Protokollen folgen. Sie können SignalR Service-Triggerbindung mit der Funktions-App verwenden, die diese Protokolle für Sie verarbeitet.
Methode
NACHRICHT
Anforderungsheader
Name | Beschreibung |
---|---|
X-ASRS-Connection-Id | Die Verbindungs-ID für die Clientverbindung. |
X-ASRS-Hub | Der Hub, zu dem die Clientverbindung gehört. |
X-ASRS-Category | Die Kategorie, zu der die Nachricht gehört. |
X-ASRS-Event | Das Ereignis, zu dem die Nachricht gehört. |
X-ASRS-Signature | Ein Hash-based Message Authentication Code (HMAC), der zur Validierung verwendet wird. Weitere Informationen finden Sie unter Signatur. |
X-ASRS-User-Claims | Eine Gruppe von Ansprüchen der Clientverbindung. |
X-ASRS-User-Id | Die Benutzeridentität des Clients, der die Nachricht sendet. |
X-ASRS-Client-Query | Die Abfrage der Anforderung, wenn sich Clients mit dem Dienst verbinden. |
Authentifizierung | Ein optionales Token, wenn Sie ManagedIdentity verwenden. |
Anforderungstext
Verbunden
Content-Type: application/json
Verbindung getrennt
Content-Type: application/json
Name | Typ | Beschreibung des Dataflows |
---|---|---|
Fehler | Zeichenfolge | Die Fehlermeldung einer geschlossenen Verbindung. Leer, wenn Verbindungen ohne Fehler geschlossen werden. |
Aufrufnachricht
Content-Type: application/json
oder application/x-msgpack
Name | Typ | Beschreibung |
---|---|---|
InvocationId | Zeichenfolge | Eine optionale Zeichenfolge, die eine Aufrufnachricht darstellt. Details finden Sie in den Aufrufen. |
Ziel | Zeichenfolge | Dasselbe wie das Ereignis und das Ziel in einer Aufrufnachricht. |
Argumente | Array von Objekten | Ein Array, das Argumente enthält, die auf die in Target genannte Methode anzuwenden sind. |
Unterschrift
Der Dienst berechnet den SHA256-Code für den X-ASRS-Connection-Id
-Wert, indem er sowohl den primären als auch den sekundären Zugriffsschlüssel als HMAC
-Schlüssel verwendet. Der Dienst legt ihn im X-ASRS-Signature
Header fest, wenn HTTP-Anforderungen an einen upstream-Endpunkt gesendet werden:
Hex_encoded(HMAC_SHA256(accessKey, connection-id))