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 is1.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.msi azure.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.app
of 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:
type=azure
De service maakt gebruik van DefaultAzureCredential:
Endpoint=xxx;AuthType=azure
type=azure.msi
De service maakt gebruik van een door de gebruiker toegewezen beheerde identiteit (ManagedIdentityCredential(clientId)) als de verbindingsreeks gebruikt
clientId
:Endpoint=xxx;AuthType=azure.msi;ClientId=<client_id>
De service maakt gebruik van een door het systeem toegewezen beheerde identiteit (ManagedIdentityCredential()):
Endpoint=xxx;AuthType=azure.msi;
type=azure.app
Beide
clientId
entenantId
zijn vereist voor het gebruik van een Microsoft Entra-toepassing met een service-principal.De service maakt gebruik van ClientSecretCredential(clientId, tenantId, clientSecret) als de verbindingsreeks gebruikt
clientSecret
:Endpoint=xxx;AuthType=azure.msi;ClientId=<client_id>;clientSecret=<client_secret>>
De service maakt gebruik van ClientCertificateCredential(clientId, tenantId, clientCertPath) als het verbindingsreeks gebruikt
clientCertPath
:Endpoint=xxx;AuthType=azure.msi;ClientId=<client_id>;TenantId=<tenant_id>;clientCertPath=</path/to/cert>
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.
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>