Compartir a través de


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

Azure SignalR Service admite el identificador de Entra de Microsoft 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.

En este ejemplo se muestra cómo configurar una identidad administrada asignada por el sistema en una máquina virtual (VM) mediante Azure Portal:

  1. En Azure Portal, busque y seleccione una máquina virtual.

  2. En Configuración, seleccione Identidad.

  3. En la pestaña Asignado por el sistema, cambie Estado a Activado.

    Screenshot of selections for turning on system-assigned managed identities for a virtual machine.

  4. Seleccione el botón Guardar para confirmar el cambio.

Para obtener información sobre cómo crear identidades administradas asignadas por el usuario, consulte Creación de una identidad administrada asignada por el usuario.

Para obtener más información sobre la configuración de identidades administradas, consulte uno de estos artículos:

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

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.

    Screenshot that shows the page for access control and selections for adding a role assignment.

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

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

  6. Seleccione su 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, a continuación, 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

Puede usar DefaultAzureCredential o ManagedIdentityCredential para configurar los puntos de conexión de Azure SignalR Service. El procedimiento recomendado es usar ManagedIdentityCredential directamente.

La identidad administrada asignada por el sistema se usa de forma predeterminada, pero asegúrese de que no configure ninguna variable de entorno que EnvironmentCredential conserve si usa DefaultAzureCredential. De lo contrario, Azure SignalR Service recurre al uso EnvironmentCredential para realizar la solicitud, lo que suele dar lugar a una Unauthorized respuesta.

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.

services.AddSignalR().AddAzureSignalR(option =>
{
    option.Endpoints = new ServiceEndpoint[]
    {
        var clientId = "<your 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 la 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 AzureSignalRConnectionStringcomo valor predeterminado ) 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 ConnectionStringSettingde enlace .

Uso de una identidad asignada por el sistema

Si configura solo el URI de servicio, use la DefaultAzureCredential clase . 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 credential clave 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 desea usar una identidad asignada por el usuario, debe asignar clientId además de las serviceUri claves 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: