Points de terminaison en amont

La fonctionnalité amont points de terminaison permet à Azure SignalR Service d’envoyer des messages et des événements de connexion à un ensemble de points de terminaison en mode serverless. Vous pouvez utiliser amont points de terminaison pour appeler une méthode hub à partir de clients en mode serverless pour notifier les points de terminaison lorsque les connexions clientes sont connectées ou déconnectées.

Remarque

Les points de terminaison en amont ne peuvent être configurés qu’en mode serverless.

Paramètres de point de terminaison en amont

Les paramètres d’un point de terminaison amont se composent d’une liste d’éléments sensibles à l’ordre :

  • un modèle d’URL spécifiant où les messages sont envoyés ;
  • un ensemble de règles ;
  • des configurations d’authentification.

Lorsqu’un événement est déclenché, les règles d’un élément sont case activée une par une dans l’ordre. Les messages seront envoyés à l’URL de point de terminaison amont du premier élément correspondant.

Paramètres de modèle d’URL

Vous pouvez paramétrer l’URL du point de terminaison amont pour prendre en charge différents modèles. Il existe trois paramètres prédéfinis :

Paramètre prédéfini Description
{hub} Un Hub est un concept d’Azure SignalR Service. Un Hub est une unité d’isolation. L’étendue des utilisateurs et de la remise des messages est limitée à un Hub.
{category} Une catégorie peut être l’une des valeurs suivantes :
  • connexions : événements de durée de vie de Connecter ion. La valeur est déclenchée quand une connexion client est connectée ou déconnectée. Elle inclut les événements connectés et déconnectés.
  • messages : déclenché lorsque les clients appellent une méthode hub. Elle inclut tous les autres événements, à l’exception des événements de la catégorie connexions .
{event} Pour la catégorie messages, un événement est la cible d’un message d’appel que le client envoie. Pour la catégorie connections, seules les valeurs connecté et déconnecté sont utilisées.

Ces paramètres prédéfinis peuvent être utilisés dans le modèle d’URL. Les paramètres sont remplacés par une valeur spécifiée lorsque vous évaluez l’URL du point de terminaison amont. Par exemple :

http://host.com/{hub}/api/{category}/{event}

quand une connexion client dans le Hub « conversation » est établie, un message est envoyé à cette URL :

http://host.com/chat/api/connections/connected

Quand un client dans le Hub « conversation » appelle la méthode Hub broadcast, un message est envoyé à cette URL :

http://host.com/chat/api/messages/broadcast

Référence Key Vault secrète dans les paramètres de modèle d’URL

L’URL du point de terminaison amont n’est pas chiffrée. Vous pouvez sécuriser les points de terminaison sensibles amont à l’aide de Key Vault et les accéder à l’aide d’une identité managée.

Pour activer l’identité managée dans votre instance de service SignalR et lui accorder l’accès Key Vault :

  1. Ajoutez une identité affectée par le système ou une identité affectée par l’utilisateur. Découvrez comment ajouter une identité managée dans Portail Azure.

  2. Accordez une autorisation de lecture secrète pour l’identité gérée dans les stratégies d’accès de Key Vault. Consultez Attribuer une stratégie d’accès Key Vault à l’aide du portail Azure

  3. Remplacez votre texte sensible par la syntaxe ci-dessous dans le modèle d’URL du point de terminaison amont :

    {@Microsoft.KeyVault(SecretUri=<secret-identity>)}
    

    <secret-identity> correspond à l’URI complet du plan de données d’un secret dans Key Vault, y compris éventuellement une version, par exemple https://myvault.vault.azure.net/secrets/mysecret/ ou https://myvault.vault.azure.net/secrets/mysecret/ec96f02080254f109c51a1f14cdb1931.

    Par exemple, une référence complète ressemble à ce qui suit :

    {@Microsoft.KeyVault(SecretUri=https://myvault.vault.azure.net/secrets/mysecret/)}
    

    Une URL de point de terminaison amont vers Azure Function se présente comme suit :

    https://contoso.azurewebsites.net/runtime/webhooks/signalr?code={@Microsoft.KeyVault(SecretUri=https://myvault.vault.azure.net/secrets/mysecret/)}
    

Remarque

Toutes les 30 minutes, ou chaque fois que les paramètres de point de terminaison amont ou la modification de l’identité managée, le service réexécute le contenu secret. Vous pouvez immédiatement déclencher une mise à jour en modifiant les paramètres de point de terminaison amont.

Paramètres de règle

Vous pouvez définir des règles hub, des règles de catégorie et des règles d’événement séparément. La règle de correspondance prend en charge trois formats :

  • Utilisez un astérisque (*) pour faire correspondre n’importe quel événement.
  • Utilisez une virgule (,) pour joindre plusieurs événements. Par exemple, connected, disconnected correspond aux événements connectés et déconnectés.
  • Utilisez le nom complet de l’événement pour correspondre à l’événement. Par exemple, connected correspond à l’événement connecté.

Remarque

Si vous utilisez Azure Functions avec le déclencheur SignalR, le déclencheur SignalR expose un point de terminaison unique au format suivant : <Function_App_URL>/runtime/webhooks/signalr?code=<API_KEY>. Vous pouvez simplement configurer les paramètres de modèle d’URL pour cette URL et conserver les paramètres de règle par défaut. Pour plus d’informations sur la recherche des <Function_App_URL> et des <API_KEY>, consultez Intégration du service SignalR.

Paramètres d’authentification

Vous pouvez configurer l’authentification pour chaque paramètre de point de terminaison amont séparément. Quand vous configurez l’authentification, un jeton est défini dans l’en-tête Authentication du message en amont. Actuellement, Azure SignalR Service prend en charge les types d’authentifications suivants :

  • None
  • ManagedIdentity

Lorsque vous sélectionnez ManagedIdentity, vous devez d’abord activer une identité managée dans Azure SignalR Service et éventuellement spécifier une ressource. Pour plus de détails, consultez Identités managées pour Azure SignalR Service.

Configurer les paramètres de point de terminaison amont via le Portail Azure

Remarque

L’intégration avec App Service Environment n’est actuellement pas prise en charge.

  1. Accédez à Azure SignalR Service.
  2. Cliquez sur Paramètres.
  3. Basculez le mode de service vers Serverless.
  4. Ajoutez des URL sous Modèle d’URL en amont. Screenshot of AzureSignalR Service Upstream settings.
  5. Sélectionnez Règles de hub pour ouvrir les Paramètres en amont. Screenshot of Azure SignalR Upstream setting details.
  6. Modifier les règles du hub, les règles d’événement et les règles de catégorie en entrant la valeur de règle dans le champ correspondant.
  7. Sous Authentification en amont, sélectionnez
  8. Utilisez l’identité managée. (Vérifiez que vous avez activé l’identité managée)
  9. Choisissez les options sous Audience dans le jeton émis. Pour plus de détails, consultez Identités managées pour Azure SignalR Service.

Configurer les paramètres de point de terminaison amont via un modèle Resource Manager

Pour configurer amont paramètres de point de terminaison à l’aide d’un modèle Azure Resource Manager, définissez la upstream propriété dans la properties propriété. L’extrait de code suivant montre comment définir la upstream propriété pour créer et mettre à jour amont paramètres de point de terminaison.

{
  "properties": {
    "upstream": {
      "templates": [
        {
          "UrlTemplate": "http://host.com/{hub}/api/{category}/{event}",
          "EventPattern": "*",
          "HubPattern": "*",
          "CategoryPattern": "*",
          "Auth": {
            "Type": "ManagedIdentity",
            "ManagedIdentity": {
              "Resource": "<resource>"
            }
          }
        }
      ]
    }
  }
}

Protocoles serverless

Azure SignalR Service envoie des messages aux points de terminaison qui suivent les protocoles suivants. Vous pouvez utiliser la liaison de déclencheur du service SignalR avec Function App, qui gère ces protocoles pour vous.

méthode

PUBLICATION

En-tête de requête

Nom Description
X-ASRS-Connection-Id ID de connexion pour la connexion client.
X-ASRS-Hub Hub auquel appartient la connexion client.
X-ASRS-Category Catégorie à laquelle appartient le message.
X-ASRS-Event Événement auquel appartient le message.
X-ASRS-Signature Code HMAC (Hash-based Message Authentication Code) utilisé pour la validation. Pour plus d’informations, consultez Signature.
X-ASRS-User-Claims Groupe de revendications de la connexion client.
X-ASRS-User-Id Identité d’utilisateur du client qui envoie le message.
X-ASRS-Client-Query Requête de la demande lorsque les clients se connectent au service.
Authentification Jeton facultatif lorsque vous utilisez ManagedIdentity.

Corps de la demande

Connecté

Type de contenu : application/json

Déconnecté

Type de contenu : application/json

Nom Type Description
Erreur string Message d’erreur d’une connexion fermée. Vide quand la connexions se ferme sans erreur.

Message d’appel

Type de contenu : application/json ou application/x-msgpack

Nom Type Description
InvocationId string Chaîne facultative représentant un message d’appel. Pour plus d’informations, consultez Appels.
Cible string Identique à l’événement et à la cible dans un message d’appel.
Arguments Tableau d’objets Tableau contenant des arguments à appliquer à la méthode référencée dans Target.

Signature

Le service calcule le code SHA256 pour la valeur X-ASRS-Connection-Id à l’aide de la clé d’accès principale et de la clé d’accès secondaire en tant que clé HMAC. Le service le définit dans l’en-tête lors de l’établissement X-ASRS-Signature de requêtes HTTP vers un point de terminaison amont :

Hex_encoded(HMAC_SHA256(accessKey, connection-id))

Étapes suivantes