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:
En Azure Portal, busque y seleccione una máquina virtual.
En Configuración, seleccione Identidad.
En la pestaña Asignado por el sistema, cambie Estado a Activado.
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:
- Configurar identidades administradas para recursos de Azure en una VM mediante Azure Portal
- Configuración de identidades administradas de recursos de Azure en una VM de Azure mediante PowerShell
- Configuración de identidades administradas para recursos de Azure en una máquina virtual de Azure mediante la CLI de Azure
- Configuración de identidades administradas para recursos de Azure en una máquina virtual de Azure mediante plantillas
- Configuración de una máquina virtual con identidades administradas para recursos de Azure mediante un SDK de Azure
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.
En Azure Portal, vaya al recurso de Azure SignalR Service.
Seleccione Access Control (IAM) .
Seleccione Agregar>Agregar asignación de roles.
En la pestaña Rol, seleccione SignalR App Server.
En la pestaña Miembros , seleccione Identidad administrada y, a continuación, elija Seleccionar miembros.
Seleccione su suscripción a Azure.
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.
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:
- Asignación de roles de Azure mediante Azure Portal
- Asignación de roles de Azure mediante la API REST
- Asignación de roles de Azure mediante Azure PowerShell
- Asignación de roles de Azure mediante la CLI de Azure
- Asignación de roles de Azure mediante plantillas de Azure Resource Manager
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 AzureSignalRConnectionString
como 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 ConnectionStringSetting
de 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: