Verbinden ion-Zeichenfolgen im Azure SignalR-Dienst
Ein Verbindungszeichenfolge enthält Informationen zum Herstellen einer Verbindung mit dem Azure SignalR-Dienst. In diesem Artikel lernen Sie die Grundlagen der Verbindungszeichenfolge kennen und erfahren, wie Sie eine in Ihrer Anwendung konfigurieren.
Was ein Verbindungszeichenfolge ist
Wenn eine Anwendung eine Verbindung mit dem Azure SignalR-Dienst herstellen muss, benötigt sie die folgenden Informationen:
- Der HTTP-Endpunkt der Azure SignalR Service-Instanz
- Die Möglichkeit, sich beim Dienstendpunkt zu authentifizieren
Eine Verbindungszeichenfolge enthält solche Informationen.
Wie ein Verbindungszeichenfolge aussieht
Ein Verbindungszeichenfolge besteht aus einer Reihe von Schlüssel-Wert-Paaren, die durch Semikolons getrennt sind (;)). Die Zeichenfolge verwendet ein Gleichheitszeichen (=), um jeden Schlüssel und dessen Wert zu verbinden. Bei Schlüsseln wird nicht zwischen Groß- und Kleinschreibung unterschieden.
Ein typisches Verbindungszeichenfolge könnte wie in diesem Beispiel aussehen:
Endpoint=https://<resource_name>.service.signalr.net;AccessKey=<access_key>;Version=1.0;
Die Verbindungszeichenfolge enthält:
Endpoint=https://<resource_name>.service.signalr.net
: Die Endpunkt-URL der Ressource.AccessKey=<access_key>
: Der Schlüssel für die Authentifizierung beim Dienst. Wenn Sie einen Zugriffsschlüssel im Verbindungszeichenfolge angeben, verwendet das Azure SignalR Service SDK es, um ein Token zu generieren, das der Dienst überprüft.Version
: Die Version der Verbindungszeichenfolge. Der Standardwert ist1.0
.
In der folgenden Tabelle sind alle gültigen Namen für Schlüssel-Wert-Paare in der Verbindungszeichenfolge aufgeführt:
Schlüssel | BESCHREIBUNG | Erforderlich | Standardwert | Beispielswert |
---|---|---|---|---|
Endpoint |
Die URL Ihrer Azure SignalR-Dienstinstanz. | Ja | Nicht zutreffend | https://foo.service.signalr.net |
Port |
Der Port, auf den Ihre Azure SignalR Service-Instanz lauscht. | Nein | 80 oder 443 , abhängig vom Endpunkt-URI-Schema |
8080 |
Version |
Die Version eines Verbindungszeichenfolge. | Nein | 1.0 |
1.0 |
ClientEndpoint |
Der URI Ihres Reverseproxys, z. B. Azure-App lication Gateway oder Azure API Management. | Nein | null |
https://foo.bar |
AuthType |
Der Authentifizierungstyp. Standardmäßig verwendet AccessKey der Dienst die Autorisierung von Anforderungen. Die Groß-/Kleinschreibung wird hier nicht beachtet. |
Nein | null |
Azure , azure.msi , azure.app |
Verwenden von AccessKey
Der Dienst verwendet die lokale Authentifizierungsmethode, wenn diese auf null
.a0> festgelegt ist.
Schlüssel | BESCHREIBUNG | Erforderlich | Standardwert | Beispielswert |
---|---|---|---|---|
AccessKey |
Die Schlüsselzeichenfolge im Base64-Format zum Erstellen eines Zugriffstokens. | Ja | null |
ABCDEFGHIJKLMNOPQRSTUVWEXYZ0123456789+=/ |
Verwenden Sie Microsoft Entra ID
Der Dienst verwendet die Microsoft Entra-Authentifizierungsmethode, wenn AuthType
diese auf azure
, azure.app
oder azure.msi
.
Schlüssel | BESCHREIBUNG | Erforderlich | Standardwert | Beispielswert |
---|---|---|---|---|
ClientId |
Eine GUID einer Azure-Anwendung oder einer Azure-Identität. | Nein | null |
00000000-0000-0000-0000-000000000000 |
TenantId |
Eine GUID einer Organisation in der Microsoft Entra-ID. | Nein | null |
00000000-0000-0000-0000-000000000000 |
ClientSecret |
Das Kennwort einer Azure-Anwendungsinstanz | Nein | null |
***********************.**************** |
ClientCertPath |
Der absolute Pfad einer Clientzertifikatdatei zu einer Azure-Anwendungsinstanz. | Nein | null |
/usr/local/cert/app.cert |
Der Dienst verwendet einen anderen TokenCredential
Wert, um Microsoft Entra-Token zu generieren, abhängig von den parametern, die Sie angeben:
type=azure
Der Dienst verwendet DefaultAzureCredential:
Endpoint=xxx;AuthType=azure
type=azure.msi
Der Dienst verwendet eine vom Benutzer zugewiesene verwaltete Identität (ManagedIdentityCredential(clientId)), wenn die Verbindungszeichenfolge folgendes verwendet
clientId
:Endpoint=xxx;AuthType=azure.msi;ClientId=<client_id>
Der Dienst verwendet eine vom System zugewiesene verwaltete Identität (ManagedIdentityCredential()):
Endpoint=xxx;AuthType=azure.msi;
type=azure.app
Beide
clientId
undtenantId
sind erforderlich, um eine Microsoft Entra-Anwendung mit einem Dienstprinzipal zu verwenden.Der Dienst verwendet ClientSecretCredential(clientId, tenantId, clientSecret), wenn der Verbindungszeichenfolge verwendet
clientSecret
:Endpoint=xxx;AuthType=azure.msi;ClientId=<client_id>;clientSecret=<client_secret>>
Der Dienst verwendet ClientCertificateCredential(clientId, tenantId, clientCertPath), wenn die Verbindungszeichenfolge folgendes verwendet
clientCertPath
:Endpoint=xxx;AuthType=azure.msi;ClientId=<client_id>;TenantId=<tenant_id>;clientCertPath=</path/to/cert>
So erhalten Sie Verbindungszeichenfolge
Sie können die Azure-Portal oder die Azure CLI verwenden, um Verbindungszeichenfolge zu erhalten.
Azure-Portal
Öffnen Sie Ihre Azure SignalR Service-Ressource im Azure-Portal. Auf der Registerkarte "Schlüssel" werden zwei Verbindungszeichenfolge (primär und sekundär) im folgenden Format angezeigt:
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>
Verbinden mit einer Microsoft Entra-Anwendung
Sie können eine Microsoft Entra-Anwendung verwenden, um eine Verbindung mit Ihrer Azure SignalR-Dienstinstanz herzustellen. Wenn die Anwendung über die berechtigung zum Zugriff auf den Azure SignalR-Dienst verfügt, ist kein Zugriffsschlüssel erforderlich.
Um die Microsoft Entra-Authentifizierung zu verwenden, müssen Sie aus dem Verbindungszeichenfolge entfernen AccessKey
und hinzufügenAuthType=azure.app
. Sie müssen auch die Anmeldeinformationen Ihrer Microsoft Entra-Anwendung angeben, einschließlich Client-ID, geheimer Clientschlüssel und Mandanten-ID. Die Verbindungszeichenfolge sieht wie im folgenden Beispiel aus:
Endpoint=https://<resource_name>.service.signalr.net;AuthType=azure.app;ClientId=<client_id>;ClientSecret=<client_secret>;TenantId=<tenant_id>;Version=1.0;
Weitere Informationen zum Authentifizieren mithilfe einer Microsoft Entra-Anwendung finden Sie unter Autorisieren von Anforderungen an SignalR-Ressourcen mit Microsoft Entra-Anwendungen.
Authentifizieren mit einer verwalteten Identität
Sie können eine vom System zugewiesene oder vom Benutzer zugewiesene verwaltete Identität verwenden, um sich bei Azure SignalR Service zu authentifizieren.
Um eine vom System zugewiesene Identität zu verwenden, fügen Sie AuthType=azure.msi
den Verbindungszeichenfolge hinzu:
Endpoint=https://<resource_name>.service.signalr.net;AuthType=azure.msi;Version=1.0;
Das Azure SignalR Service SDK verwendet automatisch die Identität Ihres App-Servers.
Um eine vom Benutzer zugewiesene Identität zu verwenden, schließen Sie die Client-ID der verwalteten Identität in die Verbindungszeichenfolge ein:
Endpoint=https://<resource_name>.service.signalr.net;AuthType=azure.msi;ClientId=<client_id>;Version=1.0;
Weitere Informationen zum Konfigurieren verwalteter Identitäten finden Sie unter Autorisieren von Anforderungen an SignalR-Ressourcen mit von Microsoft Entra verwalteten Identitäten.
Hinweis
Es wird dringend empfohlen, verwaltete Identitäten zur Authentifizierung bei Azure SignalR Service zu verwenden, da sie sicherer als Zugriffstasten sind. Wenn Sie keine Zugriffstasten für die Authentifizierung verwenden, sollten Sie sie im Azure-Portal vollständig deaktivieren (wählen Sie "Tastenzugriffsschlüssel>>deaktivieren" aus).
Wenn Sie sich für die Verwendung von Zugriffstasten entscheiden, empfehlen wir, diese regelmäßig zu drehen. Weitere Informationen finden Sie unter Drehen von Zugriffstasten für den Azure SignalR-Dienst.
Verwenden des Verbindungszeichenfolge-Generators
Das manuelle Erstellen von Verbindungszeichenfolge kann mühsam und fehleranfällig sein. Um Fehler zu vermeiden, stellt Azure SignalR Service einen Verbindungszeichenfolge Generator bereit, der Ihnen dabei hilft, eine Verbindungszeichenfolge zu generieren, die Microsoft Entra-Identitäten wie clientId
und tenantId
. Um das Tool zu verwenden, öffnen Sie Ihre Azure SignalR Service-Instanz in Azure-Portal, und wählen Sie im linken Menü Verbinden ion-Zeichenfolgen aus.
Auf dieser Seite können Sie zwischen Authentifizierungstypen (Zugriffsschlüssel, verwaltete Identität oder Microsoft Entra-Anwendung) auswählen und Informationen wie Clientendpunkt, Client-ID und geheimen Clientschlüssel eingeben. Anschließend wird die Verbindungszeichenfolge automatisch generiert. Sie können sie kopieren und in Ihrer Anwendung verwenden.
Hinweis
Informationen, die Sie eingeben, werden nach dem Verlassen der Seite nicht gespeichert. Sie müssen Ihre Verbindungszeichenfolge kopieren und speichern, um sie in Ihrer Anwendung zu verwenden.
Weitere Informationen dazu, wie Zugriffstoken generiert und überprüft werden, finden Sie im Abschnitt "Authentifizieren über Microsoft Entra-Token" in der REST-API-Referenz zu Azure SignalR Service.for more information about how access tokens are generated and valid, see the Authenticate via Microsoft Entra token section in the Azure SignalR Service data plane REST API reference.
Bereitstellen von Client- und Serverendpunkten
Ein Verbindungszeichenfolge enthält den HTTP-Endpunkt für den App-Server, um eine Verbindung mit dem Azure SignalR-Dienst herzustellen. Der Server gibt den HTTP-Endpunkt an die Clients in einer Aushandlungsantwort zurück, sodass der Client eine Verbindung mit dem Dienst herstellen kann.
In einigen Anwendungen gibt es möglicherweise eine zusätzliche Komponente vor dem Azure SignalR-Dienst. Alle Clientverbindungen müssen zuerst diese Komponente durchlaufen. Beispielsweise ist Azure-App lizenzierungsgateway ein gemeinsamer Dienst, der zusätzliche Netzwerksicherheit bietet.
In solchen Fällen muss der Client eine Verbindung mit einem Endpunkt herstellen, der sich von Azure SignalR Service unterscheidet. Anstatt den Endpunkt manuell auf der Clientseite zu ersetzen, können Sie dem Verbindungszeichenfolge hinzufügenClientEndpoint
:
Endpoint=https://<resource_name>.service.signalr.net;AccessKey=<access_key>;ClientEndpoint=https://<url_to_app_gateway>;Version=1.0;
Der App-Server gibt eine Antwort auf die Aushandlungsanforderung des Clients zurück. Die Antwort enthält die richtige Endpunkt-URL für den Client, mit der eine Verbindung hergestellt werden soll. Weitere Informationen zu Clientverbindungen finden Sie unter Internen des Azure SignalR-Diensts.
Wenn der Server versucht, Serververbindungen herzustellen oder REST-APIs an den Dienst aufzurufen, liegt azure SignalR Service möglicherweise auch hinter einem anderen Dienst wie Azure-App lizenzierungsgateway. In diesem Fall können Sie ServerEndpoint
verwenden, um den tatsächlichen Endpunkt für Serververbindungen und REST-APIs anzugeben:
Endpoint=https://<resource_name>.service.signalr.net;AccessKey=<access_key>;ServerEndpoint=https://<url_to_app_gateway>;Version=1.0;
Konfigurieren einer Verbindungszeichenfolge in Ihrer Anwendung
Es gibt zwei Möglichkeiten zum Konfigurieren einer Verbindungszeichenfolge in Ihrer Anwendung.
Sie können die Verbindungszeichenfolge beim Aufrufen der AddAzureSignalR()
API festlegen:
services.AddSignalR().AddAzureSignalR("<connection_string>");
Sie können auch ohne Argumente aufrufen AddAzureSignalR()
. Das Dienst-SDK gibt die Verbindungszeichenfolge aus einer Konfiguration zurück, die in Ihrem Konfigurationsanbieter benannt istAzure:SignalR:ConnectionString
.
In einer lokalen Entwicklungsumgebung wird die Konfiguration in einer Datei (appsettings.json oder secrets.json) oder in Umgebungsvariablen gespeichert. Sie können eine der folgenden Möglichkeiten zum Konfigurieren von Verbindungszeichenfolge verwenden:
- Verwenden Sie einen geheimen .NET-Manager (
dotnet user-secrets set Azure:SignalR:ConnectionString "<connection_string>"
). - Legen Sie eine Umgebungsvariable fest, die auf die Verbindungszeichenfolge benannt ist
Azure__SignalR__ConnectionString
. Die Doppelpunkte müssen durch einen doppelten Unterstrich im Konfigurationsanbieter der Umgebungsvariablen ersetzt werden.
In einer Produktionsumgebung können Sie andere Azure-Dienste verwenden, um Konfigurationen und geheime Schlüssel wie Azure Key Vault und App-Konfiguration zu verwalten. In der Dokumentation erfahren Sie, wie Sie einen Konfigurationsanbieter für diese Dienste einrichten.
Hinweis
Auch wenn Sie eine Verbindungszeichenfolge direkt mithilfe von Code festlegen, wird davon abgeraten, die Verbindungszeichenfolge im Quellcode hart zu codieren. Lesen Sie stattdessen die Verbindungszeichenfolge aus einem geheimen Speicher wie Key Vault und übergeben Sie es an AddAzureSignalR()
.
Konfigurieren mehrerer Verbindungszeichenfolgen
Mit dem Azure SignalR-Dienst kann der Server gleichzeitig eine Verbindung mit mehreren Dienstendpunkten herstellen, sodass mehr Verbindungen verarbeitet werden können, die über das Limit einer Dienstinstanz hinausgehen. Wenn eine Dienstinstanz nicht mehr vorhanden ist, können Sie die anderen Dienstinstanzen als Sicherung verwenden. Weitere Informationen zur Verwendung mehrerer Instanzen finden Sie unter Scale SignalR Service with multiple instances.
Es gibt zwei Möglichkeiten zum Konfigurieren mehrerer Instanzen:
Über 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), }; });
Sie können jedem Dienstendpunkt einen Namen und Typ zuweisen, um sie später unterscheiden zu können.
Durch Konfiguration:
Sie können jeden unterstützten Konfigurationsanbieter (z. B. geheimer Manager, Umgebungsvariablen oder Schlüsseltresor) verwenden, um Verbindungszeichenfolge zu speichern. Hier ist ein Beispiel, das einen geheimen Manager verwendet:
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>
Sie können jedem Endpunkt einen Namen und einen Typ zuweisen, indem Sie einen anderen Konfigurationsnamen im folgenden Format verwenden:
Azure:SignalR:ConnectionString:<name>:<type>