Delen via


Verbindingsreeksen in Azure SignalR Service

Een verbindingsreeks bevat informatie over het maken van verbinding met Azure SignalR Service. In dit artikel leert u de basisprincipes van verbindingsreeks s en hoe u er een configureert in uw toepassing.

Wat een verbindingsreeks is

Wanneer een toepassing verbinding moet maken met Azure SignalR Service, heeft deze de volgende informatie nodig:

  • Het HTTP-eindpunt van het Azure SignalR Service-exemplaar
  • De manier om te verifiëren met het service-eindpunt

Een verbindingsreeks bevat dergelijke informatie.

Hoe een verbindingsreeks eruitziet

Een verbindingsreeks bestaat uit een reeks sleutel-/waardeparen, gescheiden door puntkomma's (;). De tekenreeks gebruikt een gelijkteken (=) om elke sleutel en de bijbehorende waarde te verbinden. Sleutels zijn niet hoofdlettergevoelig.

Een typische verbindingsreeks kan er als volgt uitzien:

Endpoint=https://<resource_name>.service.signalr.net;AccessKey=<access_key>;Version=1.0;

De verbindingsreeks bevat:

  • Endpoint=https://<resource_name>.service.signalr.net: de eindpunt-URL van de resource.
  • AccessKey=<access_key>: De sleutel voor verificatie met de service. Wanneer u een toegangssleutel opgeeft in de verbindingsreeks, gebruikt de Azure SignalR Service SDK deze om een token te genereren dat door de service wordt gevalideerd.
  • Version: De versie van de verbindingsreeks. De standaardwaarde is 1.0.

De volgende tabel bevat alle geldige namen voor sleutel-/waardeparen in de verbindingsreeks.

Toets Beschrijving Vereist Default value Voorbeeldwaarde
Endpoint De URL van uw Azure SignalR Service-exemplaar. Ja Niet van toepassing https://foo.service.signalr.net
Port De poort waarop uw Azure SignalR Service-exemplaar luistert. Nee 80 of 443, afhankelijk van het eindpunt-URI-schema 8080
Version De versie van een verbindingsreeks. Nee 1.0 1.0
ClientEndpoint De URI van uw omgekeerde proxy, zoals Azure-toepassing Gateway of Azure API Management. Nee null https://foo.bar
AuthType Het verificatietype. De service gebruikt AccessKey standaard om aanvragen te autoriseren. Het is niet hoofdlettergevoelig. Nee null Azure, , azure.msiazure.app

AccessKey gebruiken

De service gebruikt de lokale verificatiemethode wanneer AuthType deze is ingesteld op null.

Toets Beschrijving Vereist Default value Voorbeeldwaarde
AccessKey De sleuteltekenreeks, in Base64-indeling, voor het bouwen van een toegangstoken. Ja null ABCDEFGHIJKLMNOPQRSTUVWEXYZ0123456789+=/

Microsoft Entra-id gebruiken

De service maakt gebruik van de Microsoft Entra-verificatiemethode wanneer AuthType deze is ingesteld op azure, azure.appof azure.msi.

Toets Beschrijving Vereist Default value Voorbeeldwaarde
ClientId Een GUID van een Azure-toepassing of een Azure-identiteit. Nee null 00000000-0000-0000-0000-000000000000
TenantId Een GUID van een organisatie in Microsoft Entra ID. Nee null 00000000-0000-0000-0000-000000000000
ClientSecret Het wachtwoord van een Azure-toepassingsexemplaren. Nee null ***********************.****************
ClientCertPath Het absolute pad van een clientcertificaatbestand naar een Azure-toepassingsexemplaren. Nee null /usr/local/cert/app.cert

De service gebruikt een andere TokenCredential waarde om Microsoft Entra-tokens te genereren, afhankelijk van de parameters die u geeft:

Hoe u verbindingsreeks s kunt krijgen

U kunt Azure Portal of de Azure CLI gebruiken om verbindingsreeks s op te halen.

Azure Portal

Open uw Azure SignalR Service-resource in Azure Portal. Het tabblad Sleutels bevat twee verbindingsreeks s (primaire en secundaire) in de volgende indeling:

Endpoint=https://<resource_name>.service.signalr.net;AccessKey=<access_key>;Version=1.0;

Azure-CLI

az signalr key list -g <resource_group> -n <resource_name>

Verbinding maken met een Microsoft Entra-toepassing

U kunt een Microsoft Entra-toepassing gebruiken om verbinding te maken met uw Azure SignalR Service-exemplaar. Als de toepassing de juiste machtigingen heeft voor toegang tot Azure SignalR Service, heeft deze geen toegangssleutel nodig.

Als u Microsoft Entra-verificatie wilt gebruiken, moet u verwijderen AccessKey uit de verbindingsreeks en toevoegenAuthType=azure.app. U moet ook de referenties van uw Microsoft Entra-toepassing opgeven, waaronder client-id, clientgeheim en tenant-id. De verbindingsreeks ziet er als volgt uit:

Endpoint=https://<resource_name>.service.signalr.net;AuthType=azure.app;ClientId=<client_id>;ClientSecret=<client_secret>;TenantId=<tenant_id>;Version=1.0;

Zie Aanvragen voor SignalR-resources autoriseren met Microsoft Entra-toepassingen voor meer informatie over verificatie met behulp van een Microsoft Entra-toepassing.

Verifiëren met een beheerde identiteit

U kunt een door het systeem toegewezen of door de gebruiker toegewezen beheerde identiteit gebruiken om te verifiëren met Azure SignalR Service.

Als u een door het systeem toegewezen identiteit wilt gebruiken, voegt u deze toe AuthType=azure.msi aan de verbindingsreeks:

Endpoint=https://<resource_name>.service.signalr.net;AuthType=azure.msi;Version=1.0;

De Azure SignalR Service SDK gebruikt automatisch de identiteit van uw app-server.

Als u een door de gebruiker toegewezen identiteit wilt gebruiken, moet u de client-id van de beheerde identiteit opnemen in de verbindingsreeks:

Endpoint=https://<resource_name>.service.signalr.net;AuthType=azure.msi;ClientId=<client_id>;Version=1.0;

Zie Aanvragen voor SignalR-resources autoriseren met door Microsoft Entra beheerde identiteiten voor meer informatie over het configureren van beheerde identiteiten.

Notitie

U wordt ten zeerste aangeraden beheerde identiteiten te gebruiken voor verificatie met Azure SignalR Service, omdat ze veiliger zijn dan toegangssleutels. Als u geen toegangssleutels voor verificatie gebruikt, kunt u overwegen deze volledig uit te schakelen in Azure Portal (selecteer Sleutels toegangssleutel>>uitschakelen).

Als u besluit toegangssleutels te gebruiken, raden we u aan deze regelmatig te roteren. Zie Toegangssleutels draaien voor Azure SignalR Service voor meer informatie.

De verbindingsreeks generator gebruiken

Het handmatig bouwen van verbindingsreeks s kan omslachtig en foutgevoelig zijn. Om fouten te voorkomen, biedt Azure SignalR Service een verbindingsreeks-generator om u te helpen bij het genereren van een verbindingsreeks met Microsoft Entra-identiteiten zoals clientId en tenantId. Als u het hulpprogramma wilt gebruiken, opent u uw Azure SignalR Service-exemplaar in Azure Portal en selecteert u verbindingsreeksen in het menu links.

Schermopname van de verbindingsreeks generator voor Azure SignalR Service in Azure Portal.

Op deze pagina kunt u kiezen uit verificatietypen (toegangssleutel, beheerde identiteit of Microsoft Entra-toepassing) en informatie invoeren, zoals clienteindpunt, client-id en clientgeheim. Vervolgens wordt de verbindingsreeks automatisch gegenereerd. U kunt deze kopiëren en gebruiken in uw toepassing.

Notitie

Gegevens die u invoert, worden niet opgeslagen nadat u de pagina hebt verlaten. U moet uw verbindingsreeks kopiëren en opslaan om deze in uw toepassing te kunnen gebruiken.

Zie de sectie Verifiëren via Microsoft Entra-token in de REST API-verwijzing voor azure SignalR Service-gegevensvlak voor meer informatie over hoe toegangstokens worden gegenereerd en gevalideerd.

Client- en servereindpunten opgeven

Een verbindingsreeks bevat het HTTP-eindpunt voor de app-server om verbinding te maken met Azure SignalR Service. De server retourneert het HTTP-eindpunt aan de clients in een onderhandelingsantwoord, zodat de client verbinding kan maken met de service.

In sommige toepassingen is er mogelijk een extra onderdeel voor Azure SignalR Service. Alle clientverbindingen moeten eerst door dat onderdeel gaan. Azure-toepassing Gateway is bijvoorbeeld een algemene service die extra netwerkbeveiliging biedt.

In dergelijke gevallen moet de client verbinding maken met een eindpunt dat verschilt van Azure SignalR Service. In plaats van het eindpunt handmatig aan de clientzijde te vervangen, kunt u toevoegen ClientEndpoint aan de verbindingsreeks:

Endpoint=https://<resource_name>.service.signalr.net;AccessKey=<access_key>;ClientEndpoint=https://<url_to_app_gateway>;Version=1.0;

De app-server retourneert een reactie op de onderhandelingsaanvraag van de client. Het antwoord bevat de juiste eindpunt-URL waarmee de client verbinding kan maken. Zie interne kenmerken van Azure SignalR Service voor meer informatie over clientverbindingen.

Als de server probeert serververbindingen te maken of REST API's aan te roepen voor de service, kan Azure SignalR Service zich ook achter een andere service bevinden, zoals Azure-toepassing Gateway. In dat geval kunt u het ServerEndpoint werkelijke eindpunt voor serververbindingen en REST API's opgeven:

Endpoint=https://<resource_name>.service.signalr.net;AccessKey=<access_key>;ServerEndpoint=https://<url_to_app_gateway>;Version=1.0;

Een verbindingsreeks configureren in uw toepassing

Er zijn twee manieren om een verbindingsreeks in uw toepassing te configureren.

U kunt de verbindingsreeks instellen bij het aanroepen van de AddAzureSignalR() API:

services.AddSignalR().AddAzureSignalR("<connection_string>");

U kunt ook zonder argumenten aanroepen AddAzureSignalR() . De service-SDK retourneert de verbindingsreeks van een configuratie met de naam Azure:SignalR:ConnectionString in uw configuratieprovider.

In een lokale ontwikkelomgeving wordt de configuratie opgeslagen in een bestand (appsettings.json of secrets.json) of in omgevingsvariabelen. U kunt een van de volgende manieren gebruiken om verbindingsreeks te configureren:

  • Gebruik een .NET-geheimbeheerder (dotnet user-secrets set Azure:SignalR:ConnectionString "<connection_string>").
  • Stel een omgevingsvariabele in met de naam Azure__SignalR__ConnectionString verbindingsreeks. De dubbele punten moeten worden vervangen door een dubbele onderstrepingsteken in de configuratieprovider van de omgevingsvariabele.

In een productieomgeving kunt u andere Azure-services gebruiken om configuraties en geheimen te beheren, zoals Azure Key Vault en App Configuration. Raadpleeg de bijbehorende documentatie voor meer informatie over het instellen van een configuratieprovider voor deze services.

Notitie

Zelfs wanneer u rechtstreeks een verbindingsreeks instelt met behulp van code, wordt u niet aangeraden de verbindingsreeks in broncode vast te leggen. Lees in plaats daarvan de verbindingsreeks uit een geheimarchief zoals Key Vault en geef deze door aan AddAzureSignalR().

Meerdere verbindingsreeks s configureren

Met Azure SignalR Service kan de server tegelijkertijd verbinding maken met meerdere service-eindpunten, zodat deze meer verbindingen kan verwerken die buiten de limiet van een service-exemplaar vallen. Wanneer het ene service-exemplaar uitvalt, kunt u de andere service-exemplaren gebruiken als back-up. Zie Scale SignalR Service met meerdere exemplaren voor meer informatie over het gebruik van meerdere exemplaren.

Er zijn twee manieren om meerdere exemplaren te configureren:

  • Via code:

    services.AddSignalR().AddAzureSignalR(options =>
        {
            options.Endpoints = new ServiceEndpoint[]
            {
                new ServiceEndpoint("<connection_string_1>", name: "name_a"),
                new ServiceEndpoint("<connection_string_2>", name: "name_b", type: EndpointType.Primary),
                new ServiceEndpoint("<connection_string_3>", name: "name_c", type: EndpointType.Secondary),
            };
        });
    

    U kunt een naam en type toewijzen aan elk service-eindpunt, zodat u deze later kunt onderscheiden.

  • Via configuratie:

    U kunt elke ondersteunde configuratieprovider (bijvoorbeeld secret manager, omgevingsvariabelen of sleutelkluis) gebruiken om verbindingsreeks s op te slaan. Hier volgt een voorbeeld waarin een geheimbeheerder wordt gebruikt:

    dotnet user-secrets set Azure:SignalR:ConnectionString:name_a <connection_string_1>
    dotnet user-secrets set Azure:SignalR:ConnectionString:name_b:primary <connection_string_2>
    dotnet user-secrets set Azure:SignalR:ConnectionString:name_c:secondary <connection_string_3>
    

    U kunt een naam en type toewijzen aan elk eindpunt met behulp van een andere configuratienaam in de volgende indeling:

    Azure:SignalR:ConnectionString:<name>:<type>