Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Un serveur proxy inverse peut être utilisé devant Azure SignalR Service. Les serveurs proxy inverses se trouvent entre les clients et le service Azure SignalR, et d’autres services peuvent aider dans divers scénarios. Par exemple, des serveurs proxy inverses peuvent équilibrer la charge de différentes demandes client à différents services principaux, et vous pouvez généralement configurer différentes règles de routage pour différentes demandes client, ainsi que fournir une expérience utilisateur transparente pour les utilisateurs accédant à différents services principaux. Ils peuvent également protéger vos serveurs principaux contre des vulnérabilités courantes aux attaques avec un contrôle de protection centralisé. Des services tels que Azure Application Gateway, Gestion des API Azure ou Akamai peuvent agir en tant que serveurs proxy inverses.
Une architecture courante utilisant un serveur proxy inverse avec Azure SignalR se présente comme suit :
Important
Des chaînes de connexion brutes sont utilisées dans cet article uniquement à des fins de démonstration.
Une chaîne de connexion contient les informations d’autorisation requises pour que votre application puisse accéder à Azure SignalR Service. La clé d’accès à l’intérieur dans la chaîne de connexion est semblable à un mot de passe racine pour votre service. Dans les environnements de production, protégez toujours vos clés d’accès. Utilisez Azure Key Vault pour gérer et permuter vos clés de façon sécurisée, sécuriser votre chaîne de connexion en utilisant Microsoft Entra ID et autoriser l’accès avec Microsoft Entra ID.
Évitez de distribuer des clés d’accès à d’autres utilisateurs, de les coder en dur ou de les enregistrer en texte brut dans un emplacement accessible à d’autres personnes. Effectuez une rotation de vos clés si vous pensez qu’elles ont pu être compromises.
Pratiques générales
Il existe plusieurs pratiques générales à suivre lors de l’utilisation d’un proxy inverse devant SignalR Service.
Des chaînes de connexion brutes sont utilisées dans cet article uniquement à des fins de démonstration. Dans les environnements de production, protégez toujours vos clés d’accès. Utilisez Azure Key Vault pour gérer et permuter vos clés de façon sécurisée, sécuriser votre chaîne de connexion en utilisant Microsoft Entra ID et autoriser l’accès avec Microsoft Entra ID.
Veillez à réécrire l’en-tête HTTP HOST entrant avec l’URL du service Azure SignalR, par exemple
https://demo.service.signalr.net. Azure SignalR est un service mutualisé, qui s’appuie sur l’en-têteHOSTpour résoudre le point de terminaison approprié. Par exemple, lors de la configuration d’Application Gateway pour Azure SignalR, sélectionnez Oui pour l’option Remplacer par le nouveau nom d’hôte.Lorsque votre client transite par votre proxy inverse vers Azure SignalR, définissez
ClientEndpointcomme URL de proxy inverse. Lorsque votre client négocie avec votre serveur hub, celui-ci retourne l’URL définie dansClientEndpointpour que votre client se connecte. Cliquez ici pour plus de détails.Il existe deux façons de configurer
ClientEndpoint:Ajouter une section
ClientEndpointà votre ConnectionString :Endpoint=...;AccessKey=...;ClientEndpoint=<reverse-proxy-URL>Configurer
ClientEndpointlors de l’appel deAddAzureSignalR:services.AddSignalR().AddAzureSignalR(o => { o.Endpoints = new Microsoft.Azure.SignalR.ServiceEndpoint[1] { new Microsoft.Azure.SignalR.ServiceEndpoint("<azure-signalr-connection-string>") { ClientEndpoint = new Uri("<reverse-proxy-URL>") } }; })
Quand un client transite par votre proxy inverse vers Azure SignalR, il existe deux types de requêtes :
- Requête HTTP POST à
<reverse-proxy-URL>/client/negotiate/, que nous appelons requête de négociation - Requête de connexion WebSocket/SSE/LongPolling en fonction de votre type de transport vers
<reverse-proxy-URL>/client/, que nous appelons requête de connexion.
Assurez-vous que votre proxy inverse prend en charge les deux types de transport pour le sous-tracé
/client/. Par exemple, lorsque votre type de transport est WebSocket, assurez-vous que votre proxy inverse prend en charge HTTP et WebSocket pour le sous-tracé/client/.Si vous avez configuré plusieurs services SignalR derrière votre proxy inverse, assurez-vous que les requêtes
negotiateetconnectavec le même paramètre de requêteasrs_request_id(indiquant qu’elles concernent la même connexion) sont routées vers la même instance de service SignalR.- Requête HTTP POST à
Pour
ServerSentEvent(SSE), assurez-vous que votre proxy inverse ne met pas en mémoire tampon ou ne met pas en cache la réponse. Par exemple, Gestion des API répertorie les éléments de vérification ici lors de la configuration de l’API pour les événements envoyés par le serveur.Quand un proxy inverse est utilisé, vous pouvez sécuriser davantage votre service SignalR en désactivant l’accès au réseau public et en utilisant des points de terminaison privés pour autoriser uniquement un accès privé de votre proxy inverse à votre service SignalR via un réseau virtuel.
Étapes suivantes
Découvrez comment utiliser Application Gateway.
Découvrez comment travailler avec la gestion des API.
Apprenez-en davantage sur les Éléments internes d’Azure SignalR.