ciągi Połączenie ion w usłudze Azure SignalR Service

Parametry połączenia zawiera informacje o sposobie nawiązywania połączenia z usługą Azure SignalR Service. W tym artykule poznasz podstawy parametry połączenia i sposób konfigurowania go w aplikacji.

Czym jest parametry połączenia

Gdy aplikacja musi nawiązać połączenie z usługą Azure SignalR Service, potrzebuje następujących informacji:

  • Punkt końcowy HTTP wystąpienia usługi Azure SignalR Service
  • Sposób uwierzytelniania za pomocą punktu końcowego usługi

Parametry połączenia zawiera takie informacje.

Jak wygląda parametry połączenia

Parametry połączenia składa się z serii par klucz/wartość oddzielonych średnikami (;). Ciąg używa znaku równości (=), aby połączyć każdy klucz i jego wartość. Klucze nie są uwzględniane wielkości liter.

Typowy parametry połączenia może wyglądać następująco:

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

Parametry połączenia zawiera:

  • Endpoint=https://<resource_name>.service.signalr.net: adres URL punktu końcowego zasobu.
  • AccessKey=<access_key>: klucz do uwierzytelniania w usłudze. Po określeniu klucza dostępu w parametry połączenia zestaw SDK usługi Azure SignalR Service używa go do wygenerowania tokenu weryfikowanego przez usługę.
  • Version: wersja parametry połączenia. Wartość domyślna to 1.0.

W poniższej tabeli wymieniono wszystkie prawidłowe nazwy par klucz/wartość w parametry połączenia.

Key opis Wymagania Domyślna wartość Przykładowa wartość
Endpoint Adres URL wystąpienia usługi Azure SignalR Service. Tak Nie dotyczy https://foo.service.signalr.net
Port Port, na który nasłuchuje wystąpienie usługi Azure SignalR Service. Nie. 80 lub 443, w zależności od schematu identyfikatora URI punktu końcowego 8080
Version Wersja parametry połączenia. Nie. 1.0 1.0
ClientEndpoint Identyfikator URI zwrotnego serwera proxy, taki jak aplikacja systemu Azure Gateway lub Azure API Management. Nie. null https://foo.bar
AuthType Typ uwierzytelniania. Domyślnie usługa używa AccessKey polecenia do autoryzowania żądań. Nie uwzględnia wielkości liter. Nie. null Azure, azure.msi, azure.app

Korzystanie z klawisza AccessKey

Usługa używa lokalnej metody uwierzytelniania, gdy AuthType jest ustawiona na null.

Key opis Wymagania Domyślna wartość Przykładowa wartość
AccessKey Ciąg klucza w formacie Base64 do tworzenia tokenu dostępu. Tak null ABCDEFGHIJKLMNOPQRSTUVWEXYZ0123456789+=/

Korzystanie z identyfikatora Entra firmy Microsoft

Usługa używa metody uwierzytelniania Entra firmy Microsoft, gdy AuthType jest ustawiona na azure, azure.applub azure.msi.

Key opis Wymagania Domyślna wartość Przykładowa wartość
ClientId Identyfikator GUID aplikacji platformy Azure lub tożsamości platformy Azure. Nie. null 00000000-0000-0000-0000-000000000000
TenantId Identyfikator GUID organizacji w usłudze Microsoft Entra ID. Nie. null 00000000-0000-0000-0000-000000000000
ClientSecret Hasło wystąpienia aplikacji platformy Azure. Nie. null ***********************.****************
ClientCertPath Ścieżka bezwzględna pliku certyfikatu klienta do wystąpienia aplikacji platformy Azure. Nie. null /usr/local/cert/app.cert

Usługa używa innej TokenCredential wartości do generowania tokenów firmy Microsoft Entra w zależności od parametrów, które podajesz:

Jak uzyskać parametry połączenia

Aby uzyskać parametry połączenia, możesz użyć witryny Azure Portal lub interfejsu wiersza polecenia platformy Azure.

Azure Portal

Otwórz zasób usługi Azure SignalR Service w witrynie Azure Portal. Karta Klucze zawiera dwa parametry połączenia (podstawowy i pomocniczy) w następującym formacie:

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

Interfejs wiersza polecenia platformy Azure

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

Połączenie z aplikacją Firmy Microsoft Entra

Aby nawiązać połączenie z wystąpieniem usługi Azure SignalR Service, możesz użyć aplikacji Firmy Microsoft Entra. Jeśli aplikacja ma odpowiednie uprawnienia dostępu do usługi Azure SignalR Service, nie potrzebuje klucza dostępu.

Aby użyć uwierzytelniania firmy Microsoft Entra, musisz usunąć AccessKey element z parametry połączenia i dodać element AuthType=azure.app. Należy również określić poświadczenia aplikacji Microsoft Entra, w tym identyfikator klienta, wpis tajny klienta i identyfikator dzierżawy. Parametry połączenia wygląda następująco:

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

Aby uzyskać więcej informacji na temat uwierzytelniania przy użyciu aplikacji Firmy Microsoft Entra, zobacz Autoryzowanie żądań do zasobów usługi SignalR za pomocą aplikacji Firmy Microsoft Entra.

Uwierzytelnianie przy użyciu tożsamości zarządzanej

Do uwierzytelniania w usłudze Azure SignalR Service można użyć przypisanej przez system lub przypisanej przez użytkownika tożsamości zarządzanej.

Aby użyć tożsamości przypisanej przez system, dodaj AuthType=azure.msi do parametry połączenia:

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

Zestaw SDK usługi Azure SignalR Service automatycznie używa tożsamości serwera aplikacji.

Aby użyć tożsamości przypisanej przez użytkownika, dołącz identyfikator klienta tożsamości zarządzanej w parametry połączenia:

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

Aby uzyskać więcej informacji na temat konfigurowania tożsamości zarządzanych, zobacz Autoryzowanie żądań do zasobów usługi SignalR przy użyciu tożsamości zarządzanych przez firmę Microsoft Entra.

Uwaga

Zdecydowanie zalecamy używanie tożsamości zarządzanych do uwierzytelniania za pomocą usługi Azure SignalR Service, ponieważ są one bezpieczniejsze niż klucze dostępu. Jeśli nie używasz kluczy dostępu do uwierzytelniania, rozważ całkowite wyłączenie ich w witrynie Azure Portal (wybierz opcję Wyłącz klucz>dostępu kluczy).>

Jeśli zdecydujesz się używać kluczy dostępu, zalecamy regularne obracanie ich. Aby uzyskać więcej informacji, zobacz Rotacja kluczy dostępu dla usługi Azure SignalR Service.

Korzystanie z generatora parametry połączenia

Ręczne tworzenie parametry połączenia może być uciążliwe i podatne na błędy. Aby uniknąć błędów, usługa Azure SignalR Service udostępnia generator parametry połączenia, który pomaga wygenerować parametry połączenia, który obejmuje tożsamości firmy Microsoft, takie jak clientId i tenantId. Aby użyć narzędzia, otwórz wystąpienie usługi Azure SignalR Service w witrynie Azure Portal i wybierz ciągi Połączenie ion z menu po lewej stronie.

Screenshot that shows the connection string generator for Azure SignalR Service in the Azure portal.

Na tej stronie można wybrać typy uwierzytelniania (klucz dostępu, tożsamość zarządzana lub aplikacja Microsoft Entra) i wprowadzić informacje, takie jak punkt końcowy klienta, identyfikator klienta i klucz tajny klienta. Następnie parametry połączenia jest generowany automatycznie. Możesz go skopiować i użyć w aplikacji.

Uwaga

Wprowadzone informacje nie są zapisywane po opuszczeniu strony. Musisz skopiować i zapisać parametry połączenia, aby używać go w aplikacji.

Aby uzyskać więcej informacji na temat sposobu generowania i weryfikowania tokenów dostępu, zobacz sekcję Uwierzytelnianie za pośrednictwem tokenu entra firmy Microsoft w dokumentacji interfejsu API REST płaszczyzny danych usługi Azure SignalR Service.

Zapewnianie punktów końcowych klienta i serwera

Parametry połączenia zawiera punkt końcowy HTTP serwera aplikacji w celu nawiązania połączenia z usługą Azure SignalR Service. Serwer zwraca punkt końcowy HTTP do klientów w odpowiedzi na negocjacje, aby klient mógł nawiązać połączenie z usługą.

W niektórych aplikacjach może istnieć dodatkowy składnik przed usługą Azure SignalR Service. Wszystkie połączenia klienckie muszą najpierw przejść przez ten składnik. Na przykład usługa aplikacja systemu Azure Gateway jest wspólną usługą, która zapewnia dodatkowe zabezpieczenia sieci.

W takich przypadkach klient musi nawiązać połączenie z punktem końcowym, który różni się od usługi Azure SignalR Service. Zamiast ręcznie zastępować punkt końcowy po stronie klienta, możesz dodać ClientEndpoint go do parametry połączenia:

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

Serwer aplikacji zwraca odpowiedź na żądanie negocjacji klienta. Odpowiedź zawiera prawidłowy adres URL punktu końcowego, z którym klient ma nawiązać połączenie. Aby uzyskać więcej informacji na temat połączeń klienckich, zobacz Azure SignalR Service internals (Wewnętrzne elementy usługi Azure SignalR Service).

Podobnie, jeśli serwer próbuje nawiązać połączenia z serwerem lub wywołać interfejsy API REST do usługi, usługa Azure SignalR Service może również znajdować się za inną usługą, na przykład aplikacja systemu Azure Gateway. W takim przypadku można ServerEndpoint określić rzeczywisty punkt końcowy dla połączeń serwera i interfejsów API REST:

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

Konfigurowanie parametry połączenia w aplikacji

Istnieją dwa sposoby konfigurowania parametry połączenia w aplikacji.

Podczas wywoływania interfejsu AddAzureSignalR() API można ustawić parametry połączenia:

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

Możesz też wywołać AddAzureSignalR() metodę bez żadnych argumentów. Zestaw SDK usługi zwraca parametry połączenia z konfiguracji o nazwie Azure:SignalR:ConnectionString w dostawcy konfiguracji.

W lokalnym środowisku projektowym konfiguracja jest przechowywana w pliku (appsettings.json lub secrets.json) lub w zmiennych środowiskowych. Aby skonfigurować parametry połączenia, możesz użyć jednego z następujących sposobów:

  • Użyj menedżera wpisów tajnych platformy .NET (dotnet user-secrets set Azure:SignalR:ConnectionString "<connection_string>").
  • Ustaw zmienną środowiskową o nazwie Azure__SignalR__ConnectionString na parametry połączenia. Dwukropki muszą zostać zastąpione podwójnym podkreśleniem u dostawcy konfiguracji zmiennej środowiskowej.

W środowisku produkcyjnym możesz użyć innych usług platformy Azure do zarządzania konfiguracjami i wpisami tajnymi, takimi jak Azure Key Vault i App Configuration. Zapoznaj się z ich dokumentacją, aby dowiedzieć się, jak skonfigurować dostawcę konfiguracji dla tych usług.

Uwaga

Nawet jeśli bezpośrednio ustawiasz parametry połączenia przy użyciu kodu, nie zalecamy kodowania parametry połączenia w kodzie źródłowym. Zamiast tego odczytaj parametry połączenia z magazynu wpisów tajnych, takiego jak Key Vault, i przekaż go do AddAzureSignalR().

Konfigurowanie wielu parametry połączenia

Usługa Azure SignalR Service umożliwia serwerowi łączenie się z wieloma punktami końcowymi usługi w tym samym czasie, dzięki czemu może obsługiwać więcej połączeń, które wykraczają poza limit wystąpienia usługi. Gdy jedno wystąpienie usługi nie działa, możesz użyć innych wystąpień usługi jako kopii zapasowej. Aby uzyskać więcej informacji na temat używania wielu wystąpień, zobacz Skalowanie usługi SignalR Service z wieloma wystąpieniami.

Istnieją dwa sposoby konfigurowania wielu wystąpień:

  • Za pomocą kodu:

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

    Możesz przypisać nazwę i typ do każdego punktu końcowego usługi, aby później je odróżnić.

  • Za pośrednictwem konfiguracji:

    Do przechowywania parametry połączenia można użyć dowolnego obsługiwanego dostawcy konfiguracji (na przykład menedżera wpisów tajnych, zmiennych środowiskowych lub magazynu kluczy). Oto przykład, który używa menedżera wpisów tajnych:

    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>
    

    Nazwę i typ można przypisać do każdego punktu końcowego, używając innej nazwy konfiguracji w następującym formacie:

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