Dela via


Anslutningssträngar i Azure SignalR Service

En anslutningssträng innehåller information om hur du ansluter till Azure SignalR Service. I den här artikeln lär du dig grunderna i anslutningssträng och hur du konfigurerar en i ditt program.

Viktigt!

Råa anslutningssträng visas endast i den här artikeln i demonstrationssyfte.

En anslutningssträng innehåller den auktoriseringsinformation som krävs för att ditt program ska få åtkomst till Azure SignalR Service. Åtkomstnyckeln i anslutningssträng liknar ett rotlösenord för din tjänst. Skydda alltid dina åtkomstnycklar i produktionsmiljöer. Använd Azure Key Vault för att hantera och rotera dina nycklar på ett säkert sätt och skydda dina anslutningssträng med hjälp av Microsoft Entra-ID och auktorisera åtkomst med Microsoft Entra-ID.

Undvik att distribuera åtkomstnycklar till andra användare, hårdkoda dem eller spara dem var som helst i oformaterad text som är tillgänglig för andra. Rotera dina nycklar om du tror att de har komprometterats.

Vad en anslutningssträng är

När ett program behöver ansluta till Azure SignalR Service behöver det följande information:

  • HTTP-slutpunkten för Azure SignalR Service-instansen
  • Sättet att autentisera med tjänstslutpunkten

En anslutningssträng innehåller sådan information.

Hur en anslutningssträng ser ut

En anslutningssträng består av en serie nyckel/värde-par avgränsade med semikolon (;). Strängen använder ett likhetstecken (=) för att ansluta varje nyckel och dess värde. Nycklar är inte skiftlägeskänsliga.

Ett typiskt anslutningssträng kan se ut som i det här exemplet:

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

Anslutningssträng innehåller:

  • Endpoint=https://<resource_name>.service.signalr.net: Resursens slutpunkts-URL.
  • AccessKey=<access_key>: Nyckeln för att autentisera med tjänsten. När du anger en åtkomstnyckel i anslutningssträng använder Azure SignalR Service SDK den för att generera en token som tjänsten validerar.
  • Version: Versionen av anslutningssträng. Standardvärdet är 1.0.

I följande tabell visas alla giltiga namn för nyckel/värde-par i anslutningssträng.

Nyckel beskrivning Obligatoriskt Standardvärde Exempelvärde
Endpoint URL:en för din Azure SignalR Service-instans. Ja Inte aktuellt https://foo.service.signalr.net
Port Porten som din Azure SignalR Service-instans lyssnar på. Nej 80 eller 443, beroende på slutpunkts-URI-schemat 8080
Version Versionen av en anslutningssträng. Nej 1.0 1.0
ClientEndpoint URI:n för din omvända proxy, till exempel Azure Application Gateway eller Azure API Management. Nej null https://foo.bar
AuthType Autentiseringstypen. Som standard använder AccessKey tjänsten för att auktorisera begäranden. Det är inte skiftlägeskänsligt. Nej null Azure, , azure.msiazure.app

Använda AccessKey

Tjänsten använder den lokala autentiseringsmetoden när AuthType är inställd på null.

Nyckel beskrivning Obligatoriskt Standardvärde Exempelvärde
AccessKey Nyckelsträngen i Base64-format för att skapa en åtkomsttoken. Ja null ABCDEFGHIJKLMNOPQRSTUVWEXYZ0123456789+=/

Använda Microsoft Entra-ID

Tjänsten använder Microsoft Entra-autentiseringsmetoden när AuthType är inställd på azure, azure.appeller azure.msi.

Nyckel beskrivning Obligatoriskt Standardvärde Exempelvärde
ClientId Ett GUID för ett Azure-program eller en Azure-identitet. Nej null 00000000-0000-0000-0000-000000000000
TenantId Ett GUID för en organisation i Microsoft Entra-ID. Nej null 00000000-0000-0000-0000-000000000000
ClientSecret Lösenordet för en Azure-programinstans. Nej null ***********************.****************
ClientCertPath Den absoluta sökvägen för en klientcertifikatfil till en Azure-programinstans. Nej null /usr/local/cert/app.cert

Tjänsten använder ett annat TokenCredential värde för att generera Microsoft Entra-token, beroende på vilka parametrar du ger:

Så här hämtar du anslutningssträng

Du kan använda Azure Portal eller Azure CLI för att få anslutningssträng.

Azure Portal

Öppna din Azure SignalR Service-resurs i Azure Portal. Fliken Nycklar visar två anslutningssträng (primära och sekundära) i följande format:

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>

Ansluta med ett Microsoft Entra-program

Du kan använda ett Microsoft Entra-program för att ansluta till din Azure SignalR Service-instans. Om programmet har rätt behörighet att komma åt Azure SignalR Service behöver det ingen åtkomstnyckel.

Om du vill använda Microsoft Entra-autentisering måste du ta bort AccessKey från anslutningssträng och lägga till AuthType=azure.app. Du måste också ange autentiseringsuppgifterna för ditt Microsoft Entra-program, inklusive klient-ID, klienthemlighet och klient-ID. Det anslutningssträng ser ut som i det här exemplet:

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

Mer information om hur du autentiserar med hjälp av ett Microsoft Entra-program finns i Auktorisera begäranden till SignalR-resurser med Microsoft Entra-program.

Autentisera med en hanterad identitet

Du kan använda en systemtilldelad eller användartilldelad hanterad identitet för att autentisera med Azure SignalR Service.

Om du vill använda en systemtilldelad identitet lägger du till AuthType=azure.msi i anslutningssträng:

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

Azure SignalR Service SDK använder automatiskt identiteten för din appserver.

Om du vill använda en användartilldelad identitet inkluderar du klient-ID:t för den hanterade identiteten i anslutningssträng:

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

Mer information om hur du konfigurerar hanterade identiteter finns i Auktorisera begäranden till SignalR-resurser med Microsoft Entra-hanterade identiteter.

Kommentar

Vi rekommenderar starkt att du använder hanterade identiteter för att autentisera med Azure SignalR Service, eftersom de är säkrare än åtkomstnycklar. Om du inte använder åtkomstnycklar för autentisering bör du överväga att helt inaktivera dem i Azure Portal (välj Inaktivera åtkomstnyckel>för nycklar>).

Om du väljer att använda åtkomstnycklar rekommenderar vi att du roterar dem regelbundet. Mer information finns i Rotera åtkomstnycklar för Azure SignalR Service.

Använda anslutningssträng generatorn

Att skapa anslutningssträng manuellt kan vara besvärligt och felbenäget. För att undvika misstag tillhandahåller Azure SignalR Service en anslutningssträng generator som hjälper dig att generera en anslutningssträng som innehåller Microsoft Entra-identiteter som clientId och tenantId. Om du vill använda verktyget öppnar du Azure SignalR Service-instansen i Azure Portal och väljer Anslutningssträngar på den vänstra menyn.

Skärmbild som visar anslutningssträng generatorn för Azure SignalR Service i Azure Portal.

På den här sidan kan du välja mellan autentiseringstyper (åtkomstnyckel, hanterad identitet eller Microsoft Entra-program) och ange information som klientslutpunkt, klient-ID och klienthemlighet. Sedan genereras anslutningssträng automatiskt. Du kan kopiera den och använda den i ditt program.

Kommentar

Information som du anger sparas inte när du har lämnat sidan. Du måste kopiera och spara din anslutningssträng för att kunna använda den i ditt program.

Mer information om hur åtkomsttoken genereras och verifieras finns i avsnittet Autentisera via Microsoft Entra-token i REST API-referensen för Azure SignalR Service-dataplanet.

Ange klient- och serverslutpunkter

En anslutningssträng innehåller HTTP-slutpunkten för appservern att ansluta till Azure SignalR Service. Servern returnerar HTTP-slutpunkten till klienterna i ett förhandlingssvar, så att klienten kan ansluta till tjänsten.

I vissa program kan det finnas en extra komponent framför Azure SignalR Service. Alla klientanslutningar måste gå igenom komponenten först. Azure Application Gateway är till exempel en vanlig tjänst som ger ytterligare nätverkssäkerhet.

I sådana fall måste klienten ansluta till en slutpunkt som skiljer sig från Azure SignalR Service. I stället för att ersätta slutpunkten manuellt på klientsidan kan du lägga till ClientEndpoint i anslutningssträng:

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

Appservern returnerar ett svar på klientens förhandlingsbegäran. Svaret innehåller rätt slutpunkts-URL för klienten att ansluta till. Mer information om klientanslutningar finns i Interna Azure SignalR Service-tjänster.

Om servern försöker upprätta serveranslutningar eller anropa REST-API:er till tjänsten kan Azure SignalR Service också ligga bakom en annan tjänst som Azure Application Gateway. I så fall kan du använda ServerEndpoint för att ange den faktiska slutpunkten för serveranslutningar och REST-API:er:

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

Konfigurera en anslutningssträng i ditt program

Råa anslutningssträng visas endast i den här artikeln i demonstrationssyfte. Skydda alltid dina åtkomstnycklar i produktionsmiljöer. Använd Azure Key Vault för att hantera och rotera dina nycklar på ett säkert sätt och skydda dina anslutningssträng med hjälp av Microsoft Entra-ID och auktorisera åtkomst med Microsoft Entra-ID.

Det finns två sätt att konfigurera en anslutningssträng i ditt program.

Du kan ange anslutningssträng när du anropar API:etAddAzureSignalR():

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

Eller så kan du anropa AddAzureSignalR() utan argument. Tjänst-SDK returnerar anslutningssträng från en konfiguration med namnet Azure:SignalR:ConnectionString i konfigurationsprovidern.

I en lokal utvecklingsmiljö lagras konfigurationen i en fil (appsettings.json eller secrets.json) eller i miljövariabler. Du kan använda något av följande sätt att konfigurera anslutningssträng:

  • Använd en .NET Secret Manager (dotnet user-secrets set Azure:SignalR:ConnectionString "<connection_string>").
  • Ange en miljövariabel med namnet Azure__SignalR__ConnectionString till anslutningssträng. Kolonen måste ersättas med ett dubbelt understreck i miljövariabelns konfigurationsprovider.

I en produktionsmiljö kan du använda andra Azure-tjänster för att hantera konfigurationer och hemligheter, till exempel Azure Key Vault och App Configuration. Se dokumentationen för att lära dig hur du konfigurerar en konfigurationsprovider för dessa tjänster.

Kommentar

Även om du ställer in en anslutningssträng direkt med hjälp av kod rekommenderar vi inte att du hårdkodar anslutningssträng i källkoden. Läs i stället anslutningssträng från ett hemligt arkiv som Key Vault och skicka det till AddAzureSignalR().

Konfigurera flera anslutningssträng

Med Azure SignalR Service kan servern ansluta till flera tjänstslutpunkter samtidigt, så att den kan hantera fler anslutningar som ligger utanför gränsen för en tjänstinstans. När en tjänstinstans är nere kan du använda de andra tjänstinstanserna som säkerhetskopiering. Mer information om hur du använder flera instanser finns i Skala SignalR Service med flera instanser.

Det finns två sätt att konfigurera flera instanser:

  • Via kod:

    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),
            };
        });
    

    Du kan tilldela ett namn och skriva till varje tjänstslutpunkt så att du kan särskilja dem senare.

  • Via konfiguration:

    Du kan använda valfri konfigurationsprovider som stöds (till exempel secret manager, miljövariabler eller nyckelvalv) för att lagra anslutningssträng. Här är ett exempel som använder en hemlig chef:

    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>
    

    Du kan tilldela ett namn och en typ till varje slutpunkt med hjälp av ett annat konfigurationsnamn i följande format:

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