Compartir vía


Autorización de solicitudes a recursos de Azure SignalR Service con identidades administradas de Microsoft Entra

Azure SignalR Service admite Microsoft Entra ID para autorizar solicitudes de Identidades administradas de Microsoft Entra.

En este artículo se muestra cómo configurar el recurso y el código de Azure SignalR Service para autorizar las solicitudes al recurso desde una identidad administrada.

Configuración de identidades administradas

El primer paso es configurar las identidades administradas.

Este ejemplo muestra cómo configurar una identidad gestionada asignada por el sistema en un App Service utilizando el portal Azure:

  1. Acceda a la configuración de la aplicación en Azure Portal en el grupo Configuración en el panel de navegación izquierdo.

  2. Seleccione Identidad.

  3. En la pestaña Asignado por el sistema, cambie Estado a Activado. Haga clic en Save(Guardar).

    Captura de pantalla que muestra dónde cambiar el estado a activado y, a continuación, seleccionar Guardar.

Para aprender a configurar identidades administradas para Azure App Service y Azure Functions, consulte Uso de identidades administradas para App Service y Azure Functions.

Para más información sobre cómo configurar identidades administradas en una máquina virtual de Azure, consulte Configuración de identidades administradas en máquinas virtuales (VM) de Azure

Adición de asignaciones de roles en Azure Portal

En los pasos siguientes se describe cómo asignar un rol de SignalR App Server a una identidad asignada por el sistema a través de un recurso de Azure SignalR Service. Para asignar roles, consulte Asignación de roles de Azure mediante Azure Portal.

Nota:

Un rol se puede asignar a cualquier ámbito, incluido el grupo de administración, la suscripción, el grupo de recursos o un único recurso. Para más información sobre el ámbito, consulte Descripción del ámbito de RBAC de Azure.

  1. En Azure Portal, vaya al recurso de Azure SignalR Service.

  2. Seleccione Access Control (IAM) .

  3. Seleccione Agregar>Agregar asignación de roles.

    Captura de pantalla que muestra la página para el control de acceso y las selecciones para agregar una asignación de roles.

  4. En la pestaña Rol, seleccione SignalR App Server.

  5. En la pestaña Miembros, seleccione Identidad administraday, a continuación, elija Seleccionar miembros.

  6. Seleccione la suscripción a Azure.

  7. Seleccione Identidad administrada asignada por el sistema, busque una máquina virtual a la que quiera asignar el rol y selecciónela.

  8. En la pestaña Revisión y asignación, seleccione Revisión y asignación para asignar el rol.

Importante

Las asignaciones de roles de Azure pueden tardar hasta 30 minutos en propagarse.

Para más información sobre cómo asignar y administrar roles de Azure, consulte estos artículos:

Configuración de la aplicación

Servidor de aplicaciones

Uso de una identidad asignada por el sistema

El SDK de Azure SignalR admite la cadena de conexión basada en identidades. Si la configuración se establece en las variables de entorno de App Server, no es necesario volver a implementar App Server, sino simplemente un cambio de configuración para migrar de la clave de acceso a MSI. Por ejemplo, actualice la variable de entorno de App Server de Azure__SignalR__ConnectionString a Endpoint=https://<resource1>.service.signalr.net;AuthType=azure.msi;Version=1.0;. O bien, establezca en código de inserción de dependencias.

services.AddSignalR().AddAzureSignalR("Endpoint=https://<resource1>.service.signalr.net;AuthType=azure.msi;Version=1.0;");

Además, puede usar DefaultAzureCredential o ManagedIdentityCredential para configurar los puntos de conexión de Azure SignalR Service. El procedimiento recomendado es usar ManagedIdentityCredential directamente.

Tenga en cuenta que la identidad administrada asignada por el sistema se usa de forma predeterminada, pero asegúrese de no configurar ninguna variable de entorno que EnvironmentCredential conservará si usa DefaultAzureCredential. De lo contrario, Azure SignalR Service vuelve a usar EnvironmentCredential para realizar la solicitud, lo que suele dar lugar a una respuesta Unauthorized.

Importante

Quite Azure__SignalR__ConnectionString si había variables de entorno de esta manera. Azure__SignalR__ConnectionString se usará para compilar ServiceEndpoint por defecto con mayor prioridad y puede que el servidor de aplicaciones use la clave de acceso de forma inesperada.

services.AddSignalR().AddAzureSignalR(option =>
{
    option.Endpoints = new ServiceEndpoint[]
    {
        new ServiceEndpoint(new Uri("https://<resource1>.service.signalr.net"), new ManagedIdentityCredential()),
    };
});

Uso de una identidad asignada por el usuario

Proporcione el valor de ClientId al crear el objeto ManagedIdentityCredential.

Importante

Use el identificador de cliente, no el identificador de objeto (entidad de seguridad), aunque sean ambos GUID.

Use la cadena de conexión basada en identidades.

services.AddSignalR().AddAzureSignalR("Endpoint=https://<resource1>.service.signalr.net;AuthType=azure.msi;ClientId=<your-user-identity-client-id>;Version=1.0;");

O bien, compile ServiceEndpoint con ManagedIdentityCredential.

services.AddSignalR().AddAzureSignalR(option =>
{
    option.Endpoints = new ServiceEndpoint[]
    {
        var clientId = "<your-user-identity-client-id>";
        new ServiceEndpoint(new Uri("https://<resource1>.service.signalr.net"), new ManagedIdentityCredential(clientId)),
    };
});

Enlaces de Azure SignalR Service en Azure Functions

Los enlaces de Azure SignalR Service en Azure Functions usan configuración de la aplicación en el portal o local.settings.json localmente para configurar una identidad administrada para acceder a los recursos de Azure SignalR Service.

Es posible que necesite un grupo de pares clave-valor para configurar una identidad. Las claves de todos los pares clave-valor deben comenzar con un prefijo de nombre de conexión (que tiene como valor predeterminado AzureSignalRConnectionString) y un separador. El separador es un carácter de subrayado (__) en el portal y dos puntos (:) localmente. Puede personalizar el prefijo mediante la propiedad de enlace ConnectionStringSetting.

Uso de una identidad asignada por el sistema

Si configura solo el URI de servicio, use la clase DefaultAzureCredential. Esta clase es útil cuando desea compartir la misma configuración en Azure y entornos de desarrollo local. Para obtener información sobre cómo funciona, consulte DefaultAzureCredential.

En Azure Portal, use el ejemplo siguiente para configurar DefaultAzureCredential. Si no configura ninguna de estas variables de entorno, la identidad asignada por el sistema se usa para la autenticación.

<CONNECTION_NAME_PREFIX>__serviceUri=https://<SIGNALR_RESOURCE_NAME>.service.signalr.net

Este es un ejemplo de configuración de DefaultAzureCredential en el archivo local.settings.json. En el ámbito local, no hay ninguna identidad administrada. La autenticación a través de Visual Studio, la CLI de Azure y las cuentas de Azure PowerShell se intentan en orden.

{
  "Values": {
    "<CONNECTION_NAME_PREFIX>:serviceUri": "https://<SIGNALR_RESOURCE_NAME>.service.signalr.net"
  }
}

Si desea usar una identidad asignada por el sistema de forma independiente y sin la influencia de otras variables de entorno, establezca la clave credential con el prefijo de nombre de conexión en managedidentity. Este es un ejemplo para la configuración de la aplicación:

<CONNECTION_NAME_PREFIX>__serviceUri = https://<SIGNALR_RESOURCE_NAME>.service.signalr.net
<CONNECTION_NAME_PREFIX>__credential = managedidentity

Uso de una identidad asignada por el usuario

Si quiere usar una identidad asignada por el usuario, debe asignar las claves de clientId además de serviceUri y credential con el prefijo de nombre de conexión. Este es un ejemplo para la configuración de la aplicación:

<CONNECTION_NAME_PREFIX>__serviceUri = https://<SIGNALR_RESOURCE_NAME>.service.signalr.net
<CONNECTION_NAME_PREFIX>__credential = managedidentity
<CONNECTION_NAME_PREFIX>__clientId = <CLIENT_ID>

Pasos siguientes

Consulte los artículos relacionados siguientes: