Jak používat službu Azure SignalR s bránou Aplikace Azure lication
Application Gateway je nástroj pro vyrovnávání zatížení webového provozu, který umožňuje spravovat provoz do webových aplikací. Použití služby Application Gateway se službou SignalR umožňuje provádět následující akce:
- Chraňte své aplikace před běžnými ohroženími zabezpečení webu.
- Získejte vyrovnávání zatížení na úrovni aplikace pro škálovatelné a vysoce dostupné aplikace.
- Nastavte komplexní zabezpečení.
- Přizpůsobte název domény.
Tento článek obsahuje dvě části,
- První část ukazuje, jak nakonfigurovat službu Application Gateway tak, aby klienti mohli přistupovat ke službě SignalR prostřednictvím služby Application Gateway.
- Druhá část ukazuje, jak zabezpečit službu SignalR Přidáním řízení přístupu ke službě SignalR a povolit provoz pouze ze služby Application Gateway.
Nezpracované připojovací řetězec se v tomto článku zobrazují jenom pro demonstrační účely. V produkčních prostředích vždy chraňte přístupové klíče. Pomocí služby Azure Key Vault můžete bezpečně spravovat a obměňovat klíče a zabezpečit připojovací řetězec pomocí ID Microsoft Entra a autorizovat přístup pomocí Microsoft Entra ID.
Nastavení a konfigurace služby Application Gateway
Vytvoření instance služby SignalR Service
- Postupujte podle článku a vytvořte instanci služby SignalR Service ASRS1.
Vytvoření instance služby Application Gateway
Vytvořte z portálu instanci služby Application Gateway AG1:
Na webu Azure Portal vyhledejte Application Gateway a vytvořte.
Na kartě Základy použijte tyto hodnoty pro následující nastavení služby Application Gateway:
Předplatné a skupina prostředků a oblast: stejné jako u služby SignalR
Název služby Application Gateway: AG1
Virtuální síť, vyberte Vytvořit novou a v okně Vytvořit virtuální síť , které se otevře, zadejte následující hodnoty, které vytvoří virtuální síť a dvě podsítě, jednu pro aplikační bránu a druhou pro back-endové servery.
Název: Jako název virtuální sítě zadejte VN1 .
Podsítě: Aktualizujte mřížku podsítí s nižšími 2 podsítěmi.
Název podsítě Rozsah adres Poznámka: myAGSubnet (rozsah adres) Podsíť pro aplikační bránu Podsíť aplikační brány může obsahovat pouze aplikační brány. Nejsou povoleny žádné další prostředky. myBackendSubnet (jiný rozsah adres) Podsíť instance Azure SignalR.
Přijměte výchozí hodnoty pro ostatní nastavení a pak vyberte Další: Front-endy
Na kartě Front-endy:
- Typ IP adresy front-endu: Veřejná.
- Vyberte Přidat novou pro veřejnou IP adresu a jako název veřejné IP adresy zadejte myAGPublicIPAddress a pak vyberte OK.
- Vybrat další: Back-endy
Na kartě Back-endy vyberte Přidat back-endový fond:
- Název: Zadejte signalr pro back-endový fond prostředků služby SignalR.
- Cíl back-endu: název hostitele instance služby SignalR Service ASRS1, například
asrs1.service.signalr.net
- Vyberte Další: Konfigurace
Na kartě Konfigurace vyberte Přidat pravidlo směrování ve sloupci Pravidla směrování:
Název pravidla: myRoutingRule
Priorita: 1
Na kartě Naslouchací proces v okně Přidat pravidlo směrování zadejte následující hodnoty pro naslouchací proces:
- Název naslouchacího procesu: Zadejte myListener pro název naslouchacího procesu.
- Front-endová IP adresa: Vyberte veřejnou IP adresu, kterou jste vytvořili pro front-end.
- Protokol: HTTP
- Front-endový protokol HTTP ve službě Application Gateway v tomto článku používáme ke zjednodušení ukázky a usnadnění práce. Ve skutečnosti ale možná budete muset povolit HTTPs a doménu zákazníka s produkčním scénářem.
- Přijměte výchozí hodnoty pro ostatní nastavení na kartě Naslouchací proces .
Na kartě Cíle back-endu použijte následující hodnoty:
Typ cíle: Back-endový fond
Back-endový cíl: výběr signalizátoru , který jsme vytvořili dříve
Nastavení back-endu: Vyberte Přidat nové a přidejte nové nastavení.
- Název nastavení back-endu: mySetting
- Back-endový protokol: HTTPS
- Použití dobře známého certifikátu certifikační autority: Ano
- Přepsání novým názvem hostitele: Ano
- Přepsání názvu hostitele: Výběr názvu hostitele z back-endového cíle
- Ostatní mají výchozí hodnoty.
Kontrola a vytvoření skupiny dostupnosti 1
Konfigurace sondy stavu služby Application Gateway
Po vytvoření skupiny dostupnosti 1 přejděte na kartu Sondy stavu v části Nastavení na portálu a změňte cestu sondy stavu na/api/health
Rychlý test
Zkuste použít neplatný požadavek
https://asrs1.service.signalr.net/client
klienta a vrátí hodnotu 400 s chybovou zprávou "hub" parametr dotazu je povinný. Znamená to, že žádost přišla do služby SignalR a provedla ověření požadavku.curl -v https://asrs1.service.signalr.net/client
vrací
< HTTP/1.1 400 Bad Request < ... < 'hub' query parameter is required.
Přejděte na kartu Přehled skupiny dostupnosti 1 a zjistěte veřejnou IP adresu front-endu.
Navštivte koncový bod stavu prostřednictvím skupiny dostupnosti 1
http://<frontend-public-IP-address>/client
a také vrátí hodnotu 400 s chybovou zprávou "hub" parametr dotazu. Znamená to, že žádost úspěšně prošla službou Application Gateway do služby SignalR a provedla ověření požadavku.curl -I http://<frontend-public-IP-address>/client
vrací
< HTTP/1.1 400 Bad Request < ... < 'hub' query parameter is required.
Spuštění chatu prostřednictvím služby Application Gateway
Provoz se teď může spojit se službou SignalR prostřednictvím služby Application Gateway. Zákazník může pro přístup k prostředku použít veřejnou IP adresu služby Application Gateway nebo vlastní název domény. Tuto chatovací aplikaci použijeme jako příklad. Začněme tím, že ho spustíme místně.
Nezpracované připojovací řetězec se v tomto článku zobrazují jenom pro demonstrační účely. V produkčních prostředích vždy chraňte přístupové klíče. Pomocí služby Azure Key Vault můžete bezpečně spravovat a obměňovat klíče a zabezpečit připojovací řetězec pomocí ID Microsoft Entra a autorizovat přístup pomocí Microsoft Entra ID.
Nejprve získáme připojovací řetězec ASRS1.
- Na kartě Připojovací řetězce služby ASRS1
- Koncový bod klienta: Zadejte adresu URL pomocí veřejné IP adresy front-endu skupiny dostupnosti 1, například
http://20.88.8.8
. Jedná se o generátor připojovací řetězec při použití reverzních proxy serverů a hodnota se při příštím návratu na tuto kartu nezachová. Po zadání hodnoty připojí připojovací řetězecClientEndpoint
oddíl. - Zkopírování připojovacího řetězce
- Koncový bod klienta: Zadejte adresu URL pomocí veřejné IP adresy front-endu skupiny dostupnosti 1, například
- Na kartě Připojovací řetězce služby ASRS1
Klonování úložiště GitHub https://github.com/aspnet/AzureSignalR-samples
Přejděte na ukázky nebo složku Chatroom:
Nastavte zkopírovaný připojovací řetězec a spusťte aplikaci místně, můžete vidět, že v připojovacímstringu je
ClientEndpoint
oddíl.cd samples/Chatroom dotnet restore dotnet user-secrets set Azure:SignalR:ConnectionString "<copied-connection-string-with-client-endpoint>" dotnet run
Otevřete http://localhost:5000 v prohlížeči a pomocí klávesy F12 zobrazte trasování sítě, můžete vidět, že připojení WebSocket je vytvořeno prostřednictvím skupiny dostupnosti AG1.
Zabezpečená služba SignalR
V předchozí části jsme úspěšně nakonfigurovali službu SignalR Jako back-endovou službu služby Application Gateway, můžeme službu SignalR volat přímo z veřejné sítě nebo prostřednictvím služby Application Gateway.
V této části nakonfigurujeme službu SignalR Service tak, aby odepřela veškerý provoz z veřejné sítě a přijímala pouze provoz ze služby Application Gateway.
Konfigurace služby SignalR
Nakonfigurujeme službu SignalR tak, aby umožňovala pouze privátní přístup. Další podrobnosti najdete v privátním koncovém bodu pro službu SignalR.
Na portálu přejděte k instanci služby SignalR Service ASRS1.
Přejděte na kartu Sítě :
Na kartě Veřejný přístup : Změna přístupu k veřejné síti na Zakázáno a Uložit, teď už nemáte přístup ke službě SignalR z veřejné sítě.
Na kartě Privátní přístup vyberte + privátní koncový bod:
- Karta Základy :
- Název: PE1
- Název síťového rozhraní: PE1-nic
- Oblast: Ujistěte se, že jste zvolili stejnou oblast jako vaše služba Application Gateway.
- Vybrat další: Prostředky
- On Resources tab
- Zachovat výchozí hodnoty
- Vyberte Další: Virtuální síť
- On Virtual Network tab
- Virtuální síť: Vyberte dříve vytvořenou síť VN1.
- Podsíť: Výběr dříve vytvořené podsítě VN1/myBackendSubnet
- Ostatní mají výchozí nastavení.
- Vybrat další: DNS
- Na kartě DNS
- Integrace s privátní zónou DNS: Ano
- Kontrola a vytvoření privátního koncového bodu
- Karta Základy :
Aktualizace back-endovém fondu služby Application Gateway
Vzhledem k tomu, že služba Application Gateway byla nastavená předtím, než se používal privátní koncový bod, musíme aktualizovat back-endový fond, abychom se podívali na zónu Privátní DNS a zjistili, že by měl směrovat provoz do privátního koncového bodu místo veřejné adresy. Aktualizaci provedeme tak, že nastavíme plně kvalifikovaný název domény back-endu na jinou hodnotu a pak ho změníme zpět.
Přejděte na kartu Back-endové fondy skupiny dostupnosti 1 a vyberte signalr:
- Krok 1: Změňte cíl
asrs1.service.signalr.net
na jinou hodnotu,x.service.signalr.net
například a vyberte Uložit. - Krok 2: Změna cíle zpět na
asrs1.service.signalr.net
Rychlý test
Teď se znovu podíváme na návštěvu
https://asrs1.service.signalr.net/client
. Když je veřejný přístup zakázaný, vrátí místo toho hodnotu 403 .curl -v https://asrs1.service.signalr.net/client
vrací
< HTTP/1.1 403 Forbidden
Navštivte koncový bod prostřednictvím skupiny dostupnosti 1
http://<frontend-public-IP-address>/client
a vrátí hodnotu 400 s chybovou zprávou " parametr dotazu hub" je povinný. To znamená, že požadavek úspěšně prošel službou Application Gateway do služby SignalR.curl -I http://<frontend-public-IP-address>/client
vrací
< HTTP/1.1 400 Bad Request < ... < 'hub' query parameter is required.
Pokud teď chatovací aplikaci spustíte místně, zobrazí se chybové zprávy Failed to connect to .... The server returned status code '403' when status code '101' was expected.
, je to proto, že je zakázaný veřejný přístup, aby se připojení k serveru localhost mohla připojit ke službě SignalR déle.
Pojďme nasadit chatovací aplikaci do stejné virtuální sítě s ASRS1, aby chat mohl komunikovat s ASRS1.
Nasazení chatovací aplikace do Azure
Na webu Azure Portal vyhledejte služby App Services a vytvořte webovou aplikaci.
Na kartě Základy použijte tyto hodnoty pro následující nastavení webové aplikace:
- Předplatné a skupina prostředků a oblast: stejné jako u služby SignalR
- Název: WA1
- Publikování: Kód
- Zásobník modulu runtime: .NET 6 (LTS)
- Operační systém: Linux
- Oblast: Ujistěte se, že je stejná jako to, co zvolíte pro službu SignalR Service.
- Vyberte Další: Nasazení, ponechte vše jako výchozí a vyberte Další:Sítě.
On the Networking tab
- Povolit injektáž sítě: vyberte Zapnuto
- Virtuální síť: Vyberte VN1 , který jsme vytvořili dříve.
- Povolení integrace virtuální sítě: Zapnuto
- Odchozí podsíť: Vytvoření nové podsítě
- Vyberte Zkontrolovat a vytvořit.
Teď nasadíme naši chatovací aplikaci do Azure. Pode
K nasazení chatovací aplikace do Azure používáme Azure CLI. Projděte si rychlý start: Nasazení webové aplikace ASP.NET pro další prostředí nasazení do Azure.
V části ukázky složek nebo Chatroom spusťte následující příkazy:
# Build and publish the assemblies to publish folder
dotnet publish --os linux -o publish
# zip the publish folder as app.zip
cd publish
zip -r app.zip .
# use az CLI to deploy app.zip to our webapp
az login
az account set -s <your-subscription-name-used-to-create-WA1>
az webapp deploy -g <resource-group-of-WA1> -n WA1 --src-path app.zip
Teď je webová aplikace nasazená, přejděme na portál wa1 a proveďte následující aktualizace:
Na kartě Konfigurace:
Nové nastavení aplikace:
Jméno Hodnota WEBSITE_DNS_SERVER 168.63.129.16 WEBSITE_VNET_ROUTE_ALL 1 Nové připojovací řetězec:
Jméno Hodnota Typ AzureSignalRConnectionString Zkopírovaný připojovací řetězec s hodnotou ClientEndpoint výběr možnosti Vlastní
Na kartě Nastavení PROTOKOLU TLS/SSL:
- Jenom HTTPS: Vypnuto. Abychom zjednodušili ukázku, použili jsme front-endový protokol HTTP ve službě Application Gateway. Proto musíme tuto možnost vypnout, aby se zabránilo automatické změně adresy URL HTTP na adresy HTTPs.
Přejděte na kartu Přehled a získejte adresu URL WA1.
Získejte adresu URL a nahraďte schéma https http,
http://wa1.azurewebsites.net
například , otevřete adresu URL v prohlížeči, teď můžete začít chatovat! Pomocí klávesy F12 otevřete trasování sítě a uvidíte, že je připojení SignalR navázáno prostřednictvím skupiny dostupnosti 1.Poznámka:
Někdy potřebujete zakázat automatické přesměrování https prohlížeče a mezipaměť prohlížeče, aby se zabránilo automatickému přesměrování adresy URL na HTTPS.
Další kroky
Teď jste úspěšně vytvořili chatovací aplikaci v reálném čase se službou SignalR Service a pomocí služby Application Gateway jste chránili své aplikace a nastavili kompletní zabezpečení. Přečtěte si další informace o službě SignalR.