Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Azure SignalR Service admite el identificador de Entra de Microsoft para autorizar solicitudes con aplicaciones de Microsoft Entra.
En este artículo se explica cómo configurar el recurso y el código para autenticar las solicitudes en el recurso mediante una aplicación de Microsoft Entra.
Registro de una aplicación en Microsoft Entra ID
El primer paso es registrar una aplicación en microsoft Entra ID:
Después de registrar la aplicación, puede encontrar los valores Id. de aplicación (cliente) y Id. de directorio (inquilino) en la página de información general de la aplicación. Estos GUID pueden ser útiles en los pasos siguientes.
Adición de credenciales
Después de registrar una aplicación, puede agregar certificados, secretos de cliente (una cadena) o credenciales de identidad federada como credenciales al registro de la aplicación cliente confidencial. Las credenciales permiten que la aplicación se autentique por sí misma, lo que no requiere ninguna interacción de un usuario en tiempo de ejecución, y son utilizadas por aplicaciones cliente confidenciales que acceden a una API web.
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 entidad de servicio o una identidad administrada para un recurso de Azure SignalR Service. Para ver los pasos detallados, consulte Asignación de roles de Azure mediante Azure Portal.
Nota:
Puede asignar un rol 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.
En el panel izquierdo, seleccione Access Control (IAM).
Seleccione Agregar>Agregar asignación de roles.
En la pestaña Rol, seleccione SignalR App Server. Otros roles integrados de Azure SignalR Service dependen de su escenario.
Rol Descripción Caso de uso SignalR App Server Acceso a las API que crean conexiones de servidor y generan claves. Se usa con más frecuencia para un servidor de aplicaciones con un recurso de Azure SignalR que se ejecuta en modo predeterminado. Propietario de SignalR Service Acceso total a todas las API del plano de datos, incluidas las API REST, las API que crean conexiones de servidor y las API que generan claves o tokens. Se usa para un servidor de negociación con un recurso de Azure SignalR Service que se ejecuta en modo sin servidor. Requiere permisos de API REST y permisos de API de autenticación. Propietario de la API REST de SignalR Acceso total a las API REST del plano de datos. Se usa para el SDK de administración de Azure SignalR para administrar conexiones y grupos, pero no realiza conexiones de servidor ni controla las solicitudes de negociación. Lector de LA API REST de SignalR Acceso de solo lectura a las API REST del plano de datos. Se utiliza al escribir una herramienta de supervisión que llama a las API de REST de solo lectura. Seleccione Siguiente.
Para la aplicación Microsoft Entra:
- En la fila Asignar acceso a , seleccione Usuario, grupo o entidad de servicio.
- En la fila Miembros , elija seleccionar miembros y, a continuación, elija la identidad en la ventana emergente.
Para la identidad administrada para los recursos de Azure:
- En la fila Asignar acceso a , seleccione Identidad administrada.
- En la fila Miembros , elija seleccionar miembros y, a continuación, elija la aplicación en la ventana emergente.
Seleccione Siguiente.
Revise la asignación y seleccione Revisar y asignar para confirmar la asignación de roles.
Importante
Las asignaciones de roles recién agregadas pueden tardar hasta 30 minutos en propagarse.
Para más información sobre cómo asignar y administrar roles de Azure, consulte:
- 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 del SDK del servidor de aplicaciones Microsoft.Azure.SignalR para C#
SDK de servidor de Azure SignalR para C#
El SDK de servidor de Azure SignalR aprovecha la biblioteca Azure.Identity para generar tokens para conectarse a los recursos. Haga clic para explorar los usos detallados.
Nota:
El tenantId debe coincidir con el tenantId del inquilino donde se encuentra su recurso de SignalR.
Uso de la aplicación Microsoft Entra con certificado
services.AddSignalR().AddAzureSignalR(option =>
{
var credential = new ClientCertificateCredential("tenantId", "clientId", "path-to-cert");
option.Endpoints = [
new ServiceEndpoint(new Uri(), "https://<resource>.service.signalr.net"), credential);
];
});
Uso de la aplicación Microsoft Entra con secreto de cliente
services.AddSignalR().AddAzureSignalR(option =>
{
var credential = new ClientSecretCredential("tenantId", "clientId", "clientSecret");
option.Endpoints = [
new ServiceEndpoint(new Uri(), "https://<resource>.service.signalr.net"), credential);
];
});
Uso de la aplicación Microsoft Entra con identidad federada
En el caso de que la organización deshabilite el uso del secreto o certificado de cliente, puede configurar la aplicación para que confíe en una identidad administrada para la autenticación.
Para más información, consulte Configuración de una aplicación para confiar en una identidad administrada (versión preliminar).
Nota:
Configurar una aplicación para confiar en una identidad administrada es una característica en versión preliminar.
services.AddSignalR().AddAzureSignalR(option =>
{
var msiCredential = new ManagedIdentityCredential("msiClientId");
var credential = new ClientAssertionCredential("tenantId", "appClientId", async (ctoken) =>
{
// Entra ID US Government: api://AzureADTokenExchangeUSGov
// Entra ID China operated by 21Vianet: api://AzureADTokenExchangeChina
var request = new TokenRequestContext([$"api://AzureADTokenExchange/.default"]);
var response = await msiCredential.GetTokenAsync(request, ctoken).ConfigureAwait(false);
return response.Token;
});
option.Endpoints = [
new ServiceEndpoint(new Uri(), "https://<resource>.service.signalr.net"), credential);
];
});
Esta credencial usará la identidad administrada asignada por el usuario para generar un clientAssertion y usarlo para intercambiar un clientToken para la autenticación.
Los appClientId y tenantId deben ser la aplicación empresarial que aprovisionó en el inquilino del recurso SignalR.
Uso de varios puntos de conexión
Las credenciales pueden ser diferentes para distintos puntos de conexión.
En este ejemplo, el SDK de Azure SignalR se conectará a resource1 utilizando el secreto de cliente y a resource2 mediante un certificado.
services.AddSignalR().AddAzureSignalR(option =>
{
var credential1 = new ClientSecretCredential("tenantId", "clientId", "clientSecret");
var credential2 = new ClientCertificateCredential("tenantId", "clientId", "path-to-cert");
option.Endpoints = new ServiceEndpoint[]
{
new ServiceEndpoint(new Uri("https://<resource1>.service.signalr.net"), credential1),
new ServiceEndpoint(new Uri("https://<resource2>.service.signalr.net"), credential2),
};
});
Puede encontrar más ejemplo en este vínculo de ejemplo.
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 identidades de aplicación de Microsoft Entra para acceder a los recursos de Azure SignalR Service.
En primer lugar, debe especificar el URI de servicio de Azure SignalR Service. La clave del URI de servicio es serviceUri. Comienza 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 Azure Portal y dos puntos (:) en el archivo local.settings.json. Puede personalizar el nombre de conexión mediante la propiedad de enlace ConnectionStringSetting. Siga leyendo para encontrar el ejemplo.
A continuación, elija si quiere configurar la identidad de aplicación de Microsoft Entra en variables de entorno predefinidas o en variables especificadas por SignalR.
Configuración de una identidad en variables de entorno predefinidas
Consulte Variables de entorno para obtener la lista de variables de entorno predefinidas. Cuando hay varios servicios, se recomienda usar la misma identidad de aplicación, a fin de que no sea necesario configurar la identidad para cada servicio. Otros servicios también pueden usar estas variables de entorno, en función de la configuración de esos servicios.
Por ejemplo, para usar credenciales de secreto de cliente, configure la identidad como se indica a continuación en el archivo local.settings.json:
{
"Values": {
"<CONNECTION_NAME_PREFIX>:serviceUri": "https://<SIGNALR_RESOURCE_NAME>.service.signalr.net",
"AZURE_CLIENT_ID": "...",
"AZURE_CLIENT_SECRET": "...",
"AZURE_TENANT_ID": "..."
}
}
En Azure Portal, agregue la configuración de la siguiente manera:
<CONNECTION_NAME_PREFIX>__serviceUri=https://<SIGNALR_RESOURCE_NAME>.service.signalr.net
AZURE_CLIENT_ID = ...
AZURE_TENANT_ID = ...
AZURE_CLIENT_SECRET = ...
Configuración de una identidad en variables especificadas por SignalR
Las variables especificadas por SignalR comparten el mismo prefijo de clave con la clave serviceUri. Esta es la lista de variables que puede usar:
clientIdclientSecrettenantId
Estos son los ejemplos para usar las credenciales de secreto de cliente en el archivo local.settings.json:
{
"Values": {
"<CONNECTION_NAME_PREFIX>:serviceUri": "https://<SIGNALR_RESOURCE_NAME>.service.signalr.net",
"<CONNECTION_NAME_PREFIX>:clientId": "...",
"<CONNECTION_NAME_PREFIX>:clientSecret": "...",
"<CONNECTION_NAME_PREFIX>:tenantId": "..."
}
}
En Azure Portal, agregue la configuración de la siguiente manera:
<CONNECTION_NAME_PREFIX>__serviceUri = https://<SIGNALR_RESOURCE_NAME>.service.signalr.net
<CONNECTION_NAME_PREFIX>__clientId = ...
<CONNECTION_NAME_PREFIX>__clientSecret = ...
<CONNECTION_NAME_PREFIX>__tenantId = ...
Pasos siguientes
Consulte los artículos relacionados siguientes: