Jak používat službu Azure SignalR s bránou Aplikace Azure

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.

Diagram znázorňující architekturu používání služby SignalR se službou Application Gateway

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

    Snímek obrazovky vytvoření instance služby Application Gateway s kartou Základy

  • 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-endySnímek obrazovky s vytvářením instance služby Application Gateway s kartou Front-ends
  • 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říkladasrs1.service.signalr.net
    • Vyberte Další: Konfigurace

    Snímek obrazovky s nastavením back-endového fondu služby Application Gateway pro službu SignalR

  • 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 . Snímek obrazovky s nastavením karty naslouchacího procesu pravidla směrování služby Application Gateway pro službu SignalR
    • 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.

        Snímek obrazovky s nastavením nastavení back-endu služby Application Gateway pro službu SignalR

      Snímek obrazovky s vytvářením back-endových cílů pro službu Application Gateway

  • Kontrola a vytvoření skupiny dostupnosti 1Snímek obrazovky s kontrolou a vytvořením instance služby Application Gateway

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

Snímek obrazovky s nastavením back-endové sondy stavu služby Application Gateway pro službu SignalR

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.

    Snímek obrazovky s rychlým testováním koncového bodu služby SignalR Stav služby prostřednictvím služby Application Gateway

  • Navštivte koncový bod stavu prostřednictvím skupiny dostupnosti 1http://<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ě.

  • Nejprve získáme připojovací řetězec ASRS1.

    • Na kartě řetězce Připojení ionu 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ězec ClientEndpoint oddíl.
      • Zkopírování řetězce Připojení ionSnímek obrazovky se získáním připojovací řetězec pro službu SignalR s koncovým bodem klienta
  • 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řipojení ionString je ClientEndpoint oddíl.

    cd samples/Chatroom
    dotnet restore
    dotnet user-secrets set Azure:SignalR:ConnectionString "<copied-onnection-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.

    Snímek obrazovky se spuštěním chatovací aplikace místně se službou App Gateway a službou SignalR

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ě.

      Snímek obrazovky se zákazem veřejného přístupu pro službu SignalR

    • 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

    Snímek obrazovky s nastavením prostředku privátního koncového bodu pro službu SignalR

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.netnapří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 1http://<frontend-public-IP-address>/client a vrátí hodnotu 400 s chybovou zprávou "hub" parametr dotazu 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řtewebovou 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. Níže

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
      AzureSignalR Připojení ionString Zkopírovaný připojovací řetězec s hodnotou ClientEndpoint výběr možnosti Vlastní

    Snímek obrazovky s konfigurací připojovací řetězec webové aplikace

  • 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.netnapří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.

    Snímek obrazovky se spuštěním chatovací aplikace v Azure se službou App Gateway a službou SignalR

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.