Share via


cadenas de Conectar ion en Azure SignalR Service

Un cadena de conexión contiene información sobre cómo conectarse a Azure SignalR Service. En este artículo, aprenderá los conceptos básicos de los cadena de conexión y cómo configurar uno en la aplicación.

¿Qué es un cadena de conexión?

Cuando una aplicación necesita conectarse a Azure SignalR Service, necesita la siguiente información:

  • Punto de conexión HTTP de la instancia de Azure SignalR Service
  • La forma de autenticarse con el punto de conexión de servicio

Un cadena de conexión contiene dicha información.

Aspecto de un cadena de conexión

Un cadena de conexión consta de una serie de pares clave-valor separados por punto y coma (;). La cadena usa un signo igual (=) para conectar cada clave y su valor. Las claves no distinguen entre mayúsculas y minúsculas.

Un cadena de conexión típico podría tener este ejemplo:

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

El cadena de conexión contiene:

  • Endpoint=https://<resource_name>.service.signalr.net: la dirección URL del punto de conexión del recurso.
  • AccessKey=<access_key>: clave para autenticarse con el servicio. Al especificar una clave de acceso en el cadena de conexión, el SDK de Azure SignalR Service lo usa para generar un token que valida el servicio.
  • Version: la versión del cadena de conexión. El valor predeterminado es 1.0.

En la tabla siguiente se enumeran todos los nombres válidos para los pares clave-valor de la cadena de conexión.

Clave Descripción Obligatorio Default value Valor de ejemplo
Endpoint Dirección URL de la instancia de Azure SignalR Service. No aplicable https://foo.service.signalr.net
Port Puerto en el que escucha la instancia de Azure SignalR Service. No 80 o 443, según el esquema de URI del punto de conexión. 8080
Version Versión de un cadena de conexión. No 1.0 1.0
ClientEndpoint El URI del proxy inverso, como App de Azure lication Gateway o Azure API Management. No null https://foo.bar
AuthType El tipo de autenticación. De forma predeterminada, el servicio usa AccessKey para autorizar solicitudes. No distingue mayúsculas de minúsculas. No null Azure, azure.msi, azure.app

Uso de AccessKey

El servicio usa el método de autenticación local cuando AuthType se establece en null.

Clave Descripción Obligatorio Default value Valor de ejemplo
AccessKey Cadena de clave, en formato Base64, para crear un token de acceso. null ABCDEFGHIJKLMNOPQRSTUVWEXYZ0123456789+=/

Uso de Microsoft Entra ID

El servicio usa el método de autenticación Microsoft Entra cuando AuthType se establece en azure, azure.appo azure.msi.

Clave Descripción Obligatorio Default value Valor de ejemplo
ClientId GUID de una aplicación de Azure o una identidad de Azure. No null 00000000-0000-0000-0000-000000000000
TenantId GUID de una organización en el identificador de Microsoft Entra. No null 00000000-0000-0000-0000-000000000000
ClientSecret Contraseña de una instancia de aplicación de Azure. No null ***********************.****************
ClientCertPath Ruta de acceso absoluta de un archivo de certificado de cliente a una instancia de aplicación de Azure. No null /usr/local/cert/app.cert

El servicio usa un valor diferente TokenCredential para generar tokens de Microsoft Entra, en función de los parámetros que proporcione:

Cómo obtener cadena de conexión

Puede usar Azure Portal o la CLI de Azure para obtener cadena de conexión.

Azure portal

Abra el recurso de Azure SignalR Service en Azure Portal. En la pestaña Claves se muestran dos cadena de conexión (principal y secundario) en el formato siguiente:

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

CLI de Azure

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

Conectar con una aplicación de Microsoft Entra

Puede usar una aplicación de Microsoft Entra para conectarse a la instancia de Azure SignalR Service. Si la aplicación tiene el permiso adecuado para acceder a Azure SignalR Service, no necesita una clave de acceso.

Para usar la autenticación de Microsoft Entra, debe quitar AccessKey del cadena de conexión y agregar AuthType=azure.app. También debe especificar las credenciales de la aplicación Microsoft Entra, incluido el identificador de cliente, el secreto de cliente y el identificador de inquilino. El cadena de conexión tiene el siguiente aspecto:

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

Para obtener más información sobre cómo autenticarse mediante una aplicación de Microsoft Entra, consulte Autorización de solicitudes a recursos de SignalR con aplicaciones de Microsoft Entra.

Autenticación con una identidad administrada

Puede usar una identidad administrada asignada por el sistema o asignada por el usuario para autenticarse con Azure SignalR Service.

Para usar una identidad asignada por el sistema, agregue AuthType=azure.msi al cadena de conexión:

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

El SDK de Azure SignalR Service usa automáticamente la identidad del servidor de aplicaciones.

Para usar una identidad asignada por el usuario, incluya el identificador de cliente de la identidad administrada en el cadena de conexión:

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

Para obtener más información sobre cómo configurar identidades administradas, consulte Autorización de solicitudes a recursos de SignalR con identidades administradas de Microsoft Entra.

Nota:

Se recomienda encarecidamente usar identidades administradas para autenticarse con Azure SignalR Service, ya que son más seguras que las claves de acceso. Si no usa claves de acceso para la autenticación, considere la posibilidad de deshabilitarlas completamente en Azure Portal (seleccione Claves>de acceso>Deshabilitada).

Si decide usar las claves de acceso, se recomienda rotarlas con regularidad. Para más información, consulte Rotación de claves de acceso para Azure SignalR Service.

Uso del generador de cadena de conexión

La creación de cadena de conexión manualmente puede ser complicada y propensa a errores. Para evitar errores, Azure SignalR Service proporciona un generador de cadena de conexión para ayudarle a generar un cadena de conexión que incluya identidades de Microsoft Entra como clientId y tenantId. Para usar la herramienta, abra la instancia de Azure SignalR Service en Azure Portal y seleccione cadenas de Conectar ion en el menú izquierdo.

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

En esta página, puede elegir entre los tipos de autenticación (clave de acceso, identidad administrada o aplicación de Microsoft Entra) y escribir información como el punto de conexión de cliente, el identificador de cliente y el secreto de cliente. A continuación, se genera automáticamente el cadena de conexión. Puede copiarlo y usarlo en la aplicación.

Nota:

La información que escriba no se guarda después de salir de la página. Debe copiar y guardar el cadena de conexión para usarlo en la aplicación.

Para más información sobre cómo se generan y validan los tokens de acceso, consulte la sección Autenticación mediante token de Microsoft Entra en la referencia de la API rest del plano de datos de Azure SignalR Service.

Proporcionar puntos de conexión de cliente y servidor

Un cadena de conexión contiene el punto de conexión HTTP para que el servidor de aplicaciones se conecte a Azure SignalR Service. El servidor devuelve el punto de conexión HTTP a los clientes en una respuesta de negociación, por lo que el cliente puede conectarse al servicio.

En algunas aplicaciones, puede haber un componente adicional delante de Azure SignalR Service. Todas las conexiones de cliente deben pasar por ese componente en primer lugar. Por ejemplo, App de Azure lication Gateway es un servicio común que proporciona seguridad de red adicional.

En tales casos, el cliente debe conectarse a un punto de conexión diferente de Azure SignalR Service. En lugar de reemplazar manualmente el punto de conexión en el lado cliente, puede agregar ClientEndpoint al cadena de conexión:

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

El servidor de aplicaciones devuelve una respuesta a la solicitud de negociación del cliente. La respuesta contiene la dirección URL correcta del punto de conexión al que se va a conectar el cliente. Para más información sobre las conexiones de cliente, consulte Los internos de Azure SignalR Service.

Del mismo modo, si el servidor intenta realizar conexiones de servidor o llamar a las API REST al servicio, Azure SignalR Service también podría estar detrás de otro servicio, como App de Azure lication Gateway. En ese caso puede usar ServerEndpoint para especificar el punto de conexión real para las conexiones de servidor y las API de REST:

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

Configuración de un cadena de conexión en la aplicación

Hay dos maneras de configurar un cadena de conexión en la aplicación.

Puede establecer el cadena de conexión al llamar a la AddAzureSignalR() API:

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

O bien, puede llamar AddAzureSignalR() sin ningún argumento. El SDK de servicio devuelve el cadena de conexión de una configuración denominada Azure:SignalR:ConnectionString en el proveedor de configuración.

En un entorno de desarrollo local, la configuración se almacena en un archivo (appsettings.json o secrets.json) o en variables de entorno. Puede usar una de las siguientes maneras de configurar cadena de conexión:

  • Use un administrador de secretos de .NET (dotnet user-secrets set Azure:SignalR:ConnectionString "<connection_string>").
  • Establezca una variable de entorno denominada Azure__SignalR__ConnectionString en el cadena de conexión. Los dos puntos deben reemplazarse por un carácter de subrayado doble en el proveedor de configuración de variables de entorno.

En un entorno de producción, puede usar otros servicios de Azure para administrar configuraciones y secretos, como Azure Key Vault y App Configuration. Consulte su documentación para obtener información sobre cómo configurar un proveedor de configuración para esos servicios.

Nota:

Incluso cuando se establece directamente un cadena de conexión mediante código, no se recomienda codificar de forma rígida el cadena de conexión en el código fuente. En su lugar, lea el cadena de conexión de un almacén de secretos como Key Vault y páselo a AddAzureSignalR().

Configuración de varias cadenas de conexión

Azure SignalR Service permite al servidor conectarse a varios puntos de conexión de servicio al mismo tiempo, por lo que puede controlar más conexiones que superan el límite de una instancia de servicio. Cuando una instancia de servicio está inactiva, puede usar las demás instancias de servicio como copia de seguridad. Para más información sobre cómo usar varias instancias, consulte Scale SignalR Service with multiple instances (Escalado de SignalR Service con varias instancias).

Hay dos maneras de configurar varias instancias:

  • A través del código:

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

    Puede asignar un nombre y un tipo a cada punto de conexión de servicio para poder distinguirlos más adelante.

  • Mediante la configuración:

    Puede usar cualquier proveedor de configuración compatible (por ejemplo, administrador de secretos, variables de entorno o almacén de claves) para almacenar cadena de conexión. Este es un ejemplo que usa un administrador de secretos:

    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>
    

    Puede asignar un nombre y un tipo a cada punto de conexión mediante un nombre de configuración diferente en el formato siguiente:

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