Připojovací řetězce ve službě Azure SignalR
Připojovací řetězec obsahuje informace o tom, jak se připojit ke službě Azure SignalR. V tomto článku se dozvíte základy připojovací řetězec a jak ho nakonfigurovat ve vaší aplikaci.
Co je připojovací řetězec
Když se aplikace potřebuje připojit ke službě Azure SignalR, potřebuje následující informace:
- Koncový bod HTTP instance služby Azure SignalR
- Způsob ověřování pomocí koncového bodu služby
Takové informace obsahuje připojovací řetězec.
Jak vypadá připojovací řetězec
Připojovací řetězec se skládá z řady párů klíč/hodnota oddělených středníky (;). Řetězec používá rovnítko (=) pro připojení každého klíče a jeho hodnoty. U klíčů se nerozlišuje malá a velká písmena.
Typický připojovací řetězec může vypadat jako v tomto příkladu:
Endpoint=https://<resource_name>.service.signalr.net;AccessKey=<access_key>;Version=1.0;
Připojovací řetězec obsahuje:
Endpoint=https://<resource_name>.service.signalr.net
: Adresa URL koncového bodu prostředku.AccessKey=<access_key>
: Klíč pro ověření ve službě. Když v připojovací řetězec zadáte přístupový klíč, sada SDK služby Azure SignalR ji použije k vygenerování tokenu, který služba ověří.Version
: Verze připojovací řetězec. Výchozí hodnota je1.0
.
V následující tabulce jsou uvedeny všechny platné názvy párů klíč/hodnota v připojovací řetězec.
Key | Popis | Povinní účastníci | Default value | Příklad hodnoty |
---|---|---|---|---|
Endpoint |
Adresa URL vaší instance služby Azure SignalR. | Ano | Nelze použít | https://foo.service.signalr.net |
Port |
Port, na který naslouchá vaše instance služby Azure SignalR. | No | 80 nebo 443 v závislosti na schématu identifikátoru URI koncového bodu |
8080 |
Version |
Verze připojovací řetězec. | No | 1.0 |
1.0 |
ClientEndpoint |
Identifikátor URI reverzního proxy serveru, například Aplikace Azure lication Gateway nebo Azure API Management. | No | null |
https://foo.bar |
AuthType |
Typ ověřování. Ve výchozím nastavení služba používá AccessKey k autorizaci požadavků. Nerozlišuje se malá a velká písmena. |
No | null |
Azure , , azure.msi azure.app |
Použití přístupového klíče
Služba používá místní metodu ověřování, pokud AuthType
je nastavena na null
.
Key | Popis | Povinní účastníci | Default value | Příklad hodnoty |
---|---|---|---|---|
AccessKey |
Řetězec klíče ve formátu Base64 pro vytvoření přístupového tokenu. | Ano | null |
ABCDEFGHIJKLMNOPQRSTUVWEXYZ0123456789+=/ |
Použití ID Microsoft Entra
Služba používá metodu ověřování Microsoft Entra, pokud AuthType
je nastavena na azure
, azure.app
nebo azure.msi
.
Key | Popis | Povinní účastníci | Default value | Příklad hodnoty |
---|---|---|---|---|
ClientId |
Identifikátor GUID aplikace Azure nebo identity Azure. | No | null |
00000000-0000-0000-0000-000000000000 |
TenantId |
Identifikátor GUID organizace v Microsoft Entra ID. | No | null |
00000000-0000-0000-0000-000000000000 |
ClientSecret |
Heslo instance aplikace Azure | No | null |
***********************.**************** |
ClientCertPath |
Absolutní cesta souboru klientského certifikátu k instanci aplikace Azure. | No | null |
/usr/local/cert/app.cert |
Služba používá k vygenerování tokenů Microsoft Entra jinou TokenCredential
hodnotu v závislosti na zadaných parametrech:
type=azure
Služba používá DefaultAzureCredential:
Endpoint=xxx;AuthType=azure
type=azure.msi
Služba používá spravovanou identitu přiřazenou uživatelem (ManagedIdentityCredential(clientId)), pokud připojovací řetězec používá
clientId
:Endpoint=xxx;AuthType=azure.msi;ClientId=<client_id>
Služba používá spravovanou identitu přiřazenou systémem (ManagedIdentityCredential()):
Endpoint=xxx;AuthType=azure.msi;
type=azure.app
K použití aplikace Microsoft Entra s instančním objektem se vyžaduje obojí
clientId
atenantId
vyžadují se.Služba používá ClientSecretCredential(clientId, tenantId, clientSecret), pokud připojovací řetězec používá
clientSecret
:Endpoint=xxx;AuthType=azure.msi;ClientId=<client_id>;clientSecret=<client_secret>>
Služba používá ClientCertificateCredential(clientId, tenantId, clientCertPath), pokud připojovací řetězec používá
clientCertPath
:Endpoint=xxx;AuthType=azure.msi;ClientId=<client_id>;TenantId=<tenant_id>;clientCertPath=</path/to/cert>
Jak získat připojovací řetězec
K získání připojovací řetězec můžete použít Azure Portal nebo Azure CLI.
portál Azure
Na webu Azure Portal otevřete prostředek služby Azure SignalR. Karta Klíče zobrazuje dva připojovací řetězec (primární a sekundární) v následujícím formátu:
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>
Připojení pomocí aplikace Microsoft Entra
Aplikaci Microsoft Entra můžete použít k připojení k instanci služby Azure SignalR. Pokud má aplikace správné oprávnění pro přístup ke službě Azure SignalR, nepotřebuje přístupový klíč.
Pokud chcete použít ověřování Microsoft Entra, musíte z připojovací řetězec odebrat AccessKey
a přidat AuthType=azure.app
. Musíte také zadat přihlašovací údaje vaší aplikace Microsoft Entra, včetně ID klienta, tajného klíče klienta a ID tenanta. Připojovací řetězec vypadá jako v tomto příkladu:
Endpoint=https://<resource_name>.service.signalr.net;AuthType=azure.app;ClientId=<client_id>;ClientSecret=<client_secret>;TenantId=<tenant_id>;Version=1.0;
Další informace o ověřování pomocí aplikace Microsoft Entra naleznete v tématu Autorizace požadavků na prostředky SignalR pomocí aplikací Microsoft Entra.
Ověřování pomocí spravované identity
Spravovanou identitu přiřazenou systémem nebo přiřazenou uživatelem můžete použít k ověření ve službě Azure SignalR.
Pokud chcete použít identitu přiřazenou systémem, přidejte AuthType=azure.msi
ji do připojovací řetězec:
Endpoint=https://<resource_name>.service.signalr.net;AuthType=azure.msi;Version=1.0;
Sada SDK služby Azure SignalR automaticky používá identitu vašeho aplikačního serveru.
Pokud chcete použít identitu přiřazenou uživatelem, zahrňte DO připojovací řetězec ID klienta spravované identity:
Endpoint=https://<resource_name>.service.signalr.net;AuthType=azure.msi;ClientId=<client_id>;Version=1.0;
Další informace o konfiguraci spravovaných identit najdete v tématu Autorizace požadavků na prostředky SignalR pomocí spravovaných identit Microsoft Entra.
Poznámka:
Důrazně doporučujeme používat spravované identity k ověřování ve službě Azure SignalR, protože jsou bezpečnější než přístupové klíče. Pokud pro ověřování nepoužíváte přístupové klíče, zvažte jejich úplné zakázání na webu Azure Portal (vyberte Možnost Zakázat přístupový klíč>klíče>).
Pokud se rozhodnete používat přístupové klíče, doporučujeme je pravidelně otáčet. Další informace najdete v tématu Obměna přístupových klíčů pro službu Azure SignalR.
Použití generátoru připojovací řetězec
Ruční sestavování připojovací řetězec může být těžkopádné a náchylné k chybám. Aby se zabránilo chybám, poskytuje služba Azure SignalR generátor připojovací řetězec, který vám pomůže vygenerovat připojovací řetězec, který zahrnuje identity Microsoft Entra, jako a clientId
tenantId
. Pokud chcete tento nástroj použít, otevřete instanci služby Azure SignalR Na webu Azure Portal a v nabídce vlevo vyberte Připojovací řetězce .
Na této stránce si můžete vybrat mezi typy ověřování (přístupový klíč, spravovaná identita nebo aplikace Microsoft Entra) a zadat informace, jako je koncový bod klienta, ID klienta a tajný klíč klienta. Potom se připojovací řetězec automaticky vygeneruje. Můžete ho zkopírovat a použít ve své aplikaci.
Poznámka:
Po opuštění stránky se informace, které zadáte, neuloží. Potřebujete zkopírovat a uložit připojovací řetězec, abyste ho mohli použít ve své aplikaci.
Další informace o tom, jak se vygenerují a ověřují přístupové tokeny, najdete v části Ověřování prostřednictvím tokenu Microsoft Entra v referenčních informacích k rozhraní REST API roviny dat služby Azure SignalR.
Poskytování koncových bodů klienta a serveru
Připojovací řetězec obsahuje koncový bod HTTP pro aplikační server pro připojení ke službě Azure SignalR. Server vrátí koncový bod HTTP klientům v odpovědi vyjednávání, aby se klient mohl připojit ke službě.
V některých aplikacích může být před službou Azure SignalR service další komponenta. Všechna klientská připojení musí nejprve projít danou komponentou. Například Aplikace Azure lication Gateway je běžná služba, která poskytuje další zabezpečení sítě.
V takových případech se klient musí připojit ke koncovému bodu, který se liší od služby Azure SignalR. Místo ručního nahrazení koncového bodu na straně klienta můžete přidat ClientEndpoint
do připojovací řetězec:
Endpoint=https://<resource_name>.service.signalr.net;AccessKey=<access_key>;ClientEndpoint=https://<url_to_app_gateway>;Version=1.0;
Aplikační server vrátí odpověď na žádost klienta o vyjednávání. Odpověď obsahuje správnou adresu URL koncového bodu, ke které se má klient připojit. Další informace o připojeních klientů najdete v interních informacích služby Azure SignalR Service.
Podobně pokud se server pokusí vytvořit připojení k serveru nebo volat rozhraní REST API ke službě, může být služba Azure SignalR také za jinou službou, jako je Aplikace Azure lication Gateway. V takovém případě můžete zadat ServerEndpoint
skutečný koncový bod pro připojení k serveru a rozhraní REST API:
Endpoint=https://<resource_name>.service.signalr.net;AccessKey=<access_key>;ServerEndpoint=https://<url_to_app_gateway>;Version=1.0;
Konfigurace připojovací řetězec v aplikaci
Existují dva způsoby konfigurace připojovací řetězec v aplikaci.
Při volání AddAzureSignalR()
rozhraní API můžete nastavit připojovací řetězec:
services.AddSignalR().AddAzureSignalR("<connection_string>");
Nebo můžete volat AddAzureSignalR()
bez argumentů. Sada SDK služby vrátí připojovací řetězec z konfigurace pojmenované Azure:SignalR:ConnectionString
ve vašem poskytovateli konfigurace.
V místním vývojovém prostředí je konfigurace uložená v souboru (appsettings.json nebo secrets.json) nebo v proměnných prostředí. Ke konfiguraci připojovací řetězec můžete použít jeden z následujících způsobů:
- Použijte správce tajných kódů .NET (
dotnet user-secrets set Azure:SignalR:ConnectionString "<connection_string>"
). - Nastavte proměnnou prostředí s názvem
Azure__SignalR__ConnectionString
na připojovací řetězec. Dvojtečky musí být nahrazeny dvojitým podtržítkem ve zprostředkovateli konfigurace proměnné prostředí.
V produkčním prostředí můžete ke správě konfigurací a tajných kódů, jako je Azure Key Vault a App Configuration, použít jiné služby Azure. V dokumentaci se dozvíte, jak pro tyto služby nastavit poskytovatele konfigurace.
Poznámka:
I když přímo nastavujete připojovací řetězec pomocí kódu, nedoporučujeme pevně zakódovat připojovací řetězec ve zdrojovém kódu. Místo toho si přečtěte připojovací řetězec z úložiště tajných kódů, jako je Key Vault, a předejte ho AddAzureSignalR()
.
Konfigurace více připojovací řetězec
Služba Azure SignalR umožňuje serveru připojit se k několika koncovým bodům služby současně, aby mohl zpracovávat více připojení, která přesahuje limit instance služby. Když je jedna instance služby mimo provoz, můžete jako zálohu použít další instance služby. Další informace o použití více instancí naleznete v tématu Škálování služby SignalR service s více instancemi.
Existují dva způsoby konfigurace více instancí:
Prostřednictvím kódu:
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), }; });
Každému koncovému bodu služby můžete přiřadit název a typ, abyste je mohli později rozlišit.
Prostřednictvím konfigurace:
K ukládání připojovací řetězec můžete použít libovolného podporovaného zprostředkovatele konfigurace (například Správce tajných kódů, proměnné prostředí nebo trezor klíčů). Tady je příklad, který používá správce tajných kódů:
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>
Ke každému koncovému bodu můžete přiřadit název a typ pomocí jiného názvu konfigurace v následujícím formátu:
Azure:SignalR:ConnectionString:<name>:<type>