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:
Acceda a la configuración de la aplicación en Azure Portal en el grupo Configuración en el panel de navegación izquierdo.
Seleccione Identidad.
En la pestaña Asignado por el sistema, cambie Estado a Activado. Haga clic en Save(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.
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 administraday, a continuación, elija Seleccionar miembros.
Seleccione la suscripción a Azure.
Seleccione Identidad administrada asignada por el sistema, busque una máquina virtual a la que quiera asignar el rol y 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
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: