Överordnade slutpunkter
Funktionen för överordnade slutpunkter gör att Azure SignalR Service kan skicka meddelanden och anslutningshändelser till en uppsättning slutpunkter i serverlöst läge. Du kan använda överordnade slutpunkter för att anropa en hubbmetod från klienter i serverlöst läge för att meddela slutpunkter när klientanslutningar är anslutna eller frånkopplade.
Kommentar
Överordnade slutpunkter kan bara konfigureras i serverlöst läge.
Inställningar för överordnade slutpunkter
Inställningarna för en överordnad slutpunkt består av en lista över orderkänsliga objekt:
- En URL-mall som anger var meddelanden ska skickas.
- En uppsättning regler.
- Autentiseringskonfigurationer.
När en händelse utlöses kontrolleras ett objekts regler en i taget i ordning. Meddelanden skickas till det första matchande objektets överordnade slutpunkts-URL.
Inställningar för URL-mall
Du kan parametrisera den överordnade slutpunkts-URL:en för att stödja olika mönster. Det finns tre fördefinierade parametrar:
Fördefinierad parameter | beskrivning |
---|---|
{hub} | En hubb är ett begrepp för Azure SignalR Service. En hubb är en isoleringsenhet. Omfattningen för användare och meddelandeleverans är begränsad till en hubb. |
{kategori} | En kategori kan vara något av följande värden:
|
{event} | För meddelandekategorin är en händelse målet i ett anropsmeddelande som klienterna skickar. För kategorin anslutningar används endast anslutna och frånkopplade. |
Dessa fördefinierade parametrar kan användas i URL-mönstret. Parametrar ersätts med ett angivet värde när du utvärderar den överordnade slutpunkts-URL:en. Till exempel:
http://host.com/{hub}/api/{category}/{event}
När en klientanslutning i "chatt"-hubben är ansluten skickas ett meddelande till den här URL:en:
http://host.com/chat/api/connections/connected
När en klient i "chatt"-hubben anropar hubbmetoden broadcast
skickas ett meddelande till den här URL:en:
http://host.com/chat/api/messages/broadcast
Nyckelvalvshemlighetsreferens i URL-mallinställningar
Den överordnade slutpunkts-URL:en är inte krypterad. Du kan skydda känsliga överordnade slutpunkter med hjälp av Key Vault och komma åt dem med en hanterad identitet.
Så här aktiverar du hanterad identitet i din SignalR-tjänstinstans och ger den Åtkomst till Key Vault:
Lägg till en systemtilldelad identitet eller användartilldelad identitet. Se Lägga till hanterad identitet i Azure-portalen.
Bevilja hemlig läsbehörighet för den hanterade identiteten i åtkomstprinciperna i Key Vault. Se Tilldela en Key Vault-åtkomstprincip med hjälp av Azure-portalen
Ersätt din känsliga text med syntaxen nedan i det överordnade slutpunkts-URL-mönstret:
{@Microsoft.KeyVault(SecretUri=<secret-identity>)}
<secret-identity>
är den fullständiga dataplans-URI:n för en hemlighet i Key Vault, om du vill inkludera en version, t.ex. https://myvault.vault.azure.net/secrets/mysecret/https://myvault.vault.azure.net/secrets/mysecret/ec96f02080254f109c51a1f14cdb1931En fullständig referens skulle till exempel se ut så här:
{@Microsoft.KeyVault(SecretUri=https://myvault.vault.azure.net/secrets/mysecret/)}
En överordnad slutpunkts-URL till Azure Function skulle se ut så här:
https://contoso.azurewebsites.net/runtime/webhooks/signalr?code={@Microsoft.KeyVault(SecretUri=https://myvault.vault.azure.net/secrets/mysecret/)}
Kommentar
Var 30:e minut, eller när de överordnade slutpunktsinställningarna eller den hanterade identiteten ändras, läser tjänsten om det hemliga innehållet. Du kan omedelbart utlösa en uppdatering genom att ändra inställningarna för den överordnade slutpunkten.
Regelinställningar
Du kan ange hubbregler, kategoriregler och händelseregler separat. Matchningsregeln stöder tre format:
- Använd en asterisk (*) för att matcha alla händelser.
- Använd ett kommatecken (,) för att ansluta till flera händelser. Matchar till exempel
connected, disconnected
de anslutna och frånkopplade händelserna. - Använd det fullständiga händelsenamnet för att matcha händelsen. Matchar till exempel
connected
den anslutna händelsen.
Kommentar
Om du använder Azure Functions med SignalR-utlösare exponerar SignalR-utlösaren en enskild slutpunkt i följande format: <Function_App_URL>/runtime/webhooks/signalr?code=<API_KEY>
.
Du kan bara konfigurera URL-mallinställningar till den här URL:en och behålla standardinställningarna för regel. Se SignalR Service-integrering för mer information om hur du hittar <Function_App_URL>
och <API_KEY>
.
Autentiseringsinställningar
Du kan konfigurera autentisering för varje överordnade slutpunktsinställning separat. När du konfigurerar autentisering anges en token i rubriken för Authentication
det överordnade meddelandet. För närvarande stöder Azure SignalR Service följande autentiseringstyper:
None
ManagedIdentity
När du väljer ManagedIdentity
måste du först aktivera en hanterad identitet i Azure SignalR Service och eventuellt ange en resurs. Mer information finns i Hanterade identiteter för Azure SignalR Service .
Konfigurera inställningar för överordnade slutpunkter via Azure-portalen
Kommentar
Integrering med App Service Environment stöds för närvarande inte.
- Gå till Azure SignalR Service.
- Välj Inställningar.
- Växla tjänstläge till Serverlös.
- Lägg till URL:er under uppströms-URL-mönster.
- Välj Hubbregler för att öppna Överordnade inställningar.
- Ändra hubbregler, händelseregler och kategoriregler genom att ange regelvärde i motsvarande fält.
- Under Överordnad autentisering väljer du
- Använd Hanterad identitet. (Kontrollera att du har aktiverat hanterad identitet)
- Välj alternativ under Målgrupp i den utfärdade token. Mer information finns i Hanterade identiteter för Azure SignalR Service .
Konfigurera överordnade slutpunktsinställningar via Resource Manager-mall
Om du vill konfigurera överordnade slutpunktsinställningar med hjälp av en Azure Resource Manager-mall anger du upstream
egenskapen i properties
egenskapen. Följande kodfragment visar hur du ställer in upstream
egenskapen för att skapa och uppdatera överordnade slutpunktsinställningar.
{
"properties": {
"upstream": {
"templates": [
{
"UrlTemplate": "http://host.com/{hub}/api/{category}/{event}",
"EventPattern": "*",
"HubPattern": "*",
"CategoryPattern": "*",
"Auth": {
"Type": "ManagedIdentity",
"ManagedIdentity": {
"Resource": "<resource>"
}
}
}
]
}
}
}
Serverlösa protokoll
Azure SignalR Service skickar meddelanden till slutpunkter som följer följande protokoll. Du kan använda SignalR Service-utlösarbindning med Funktionsapp, som hanterar dessa protokoll åt dig.
Metod
POST
Begärandehuvud
Name | beskrivning |
---|---|
X-ASRS-Connection-ID | Anslutnings-ID för klientanslutningen. |
X-ASRS-Hub | Hubben som klientanslutningen tillhör. |
X-ASRS-Kategori | Den kategori som meddelandet tillhör. |
X-ASRS-Event | Händelsen som meddelandet tillhör. |
X-ASRS-Signature | En hashbaserad kod för meddelandeautentisering (HMAC) som används för validering. Mer information finns i Signatur . |
X-ASRS-User-Claims | En grupp med anspråk för klientanslutningen. |
X-ASRS-User-ID | Användaridentiteten för klienten som skickar meddelandet. |
X-ASRS-Client-Query | Frågan för begäran när klienter ansluter till tjänsten. |
Autentisering | En valfri token när du använder ManagedIdentity . |
Begärandetext
Connected
Innehållstyp: application/json
Frånkopplad
Innehållstyp: application/json
Namn | Type | Beskrivning |
---|---|---|
Fel | sträng | Felmeddelandet för en stängd anslutning. Tom när anslutningar stängs utan fel. |
Meddelande om anrop
Innehållstyp: application/json
eller application/x-msgpack
Namn | Type | Beskrivning |
---|---|---|
Anrops-ID | sträng | En valfri sträng som representerar ett meddelande om anrop. Hitta information i anrop. |
Mål | sträng | Samma som händelsen och samma som målet i ett anropsmeddelande. |
Argument | Matris med objekt | En matris som innehåller argument som ska tillämpas på den metod som anges i Target . |
Signatur
Tjänsten beräknar SHA256-kod för X-ASRS-Connection-Id
värdet med både den primära åtkomstnyckeln och den sekundära åtkomstnyckeln HMAC
som nyckel. Tjänsten ställer in den i X-ASRS-Signature
huvudet när http-begäranden görs till en överordnad slutpunkt:
Hex_encoded(HMAC_SHA256(accessKey, connection-id))