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 är1.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.msi azure.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.app
eller 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:
type=azure
Tjänsten använder DefaultAzureCredential:
Endpoint=xxx;AuthType=azure
type=azure.msi
Tjänsten använder en användartilldelad hanterad identitet (ManagedIdentityCredential(clientId)) om anslutningssträng använder
clientId
:Endpoint=xxx;AuthType=azure.msi;ClientId=<client_id>
Tjänsten använder en systemtilldelad hanterad identitet (ManagedIdentityCredential()):
Endpoint=xxx;AuthType=azure.msi;
type=azure.app
Både
clientId
ochtenantId
krävs för att använda ett Microsoft Entra-program med tjänstens huvudnamn.Tjänsten använder ClientSecretCredential(clientId, tenantId, clientSecret) om anslutningssträng använder
clientSecret
:Endpoint=xxx;AuthType=azure.msi;ClientId=<client_id>;clientSecret=<client_secret>>
Tjänsten använder ClientCertificateCredential(clientId, tenantId, clientCertPath) om anslutningssträng använder
clientCertPath
:Endpoint=xxx;AuthType=azure.msi;ClientId=<client_id>;TenantId=<tenant_id>;clientCertPath=</path/to/cert>
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.
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>