Autorizar solicitudes a recursos de Azure SignalR Service con aplicaciones de Microsoft Entra
Azure SignalR Service admite Microsoft Entra ID para autorizar solicitudes de Aplicaciones de Microsoft Entra.
En este artículo se muestra cómo configurar el recurso y los códigos de Azure SignalR Service para autorizar las solicitudes al recurso desde una aplicación de Microsoft Entra.
Registrar una aplicación
El primer paso es registrar una aplicación de Microsoft Entra:
En Azure Portal, busque y seleccione Microsoft Entra ID.
En Administrar, seleccione Registros de aplicaciones.
Seleccione Nuevo registro. Se abre el panel Registrar una aplicación.
En Nombre, escriba un nombre para mostrar para la aplicación.
Seleccione Registrar para confirmar el registro.
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.
Para obtener más información sobre el registro de una aplicación, consulte Inicio rápido: Registro de una aplicación con la Plataforma de identidad de Microsoft.
Agregar credenciales
Puede agregar certificados y secretos de cliente (una cadena) como credenciales al registro de la aplicación cliente confidencial.
Secreto del cliente
La aplicación requiere un secreto de cliente para demostrar su identidad cuando solicita un token. Para crear un secreto de cliente, siga estos pasos:
En Administrar, seleccione Certificados y secretos.
En la pestaña Secretos de cliente, seleccione Nuevo secreto de cliente.
Escriba una descripción para el secreto de cliente y elija una hora de expiración.
Copie el valor del secreto de cliente y péguelo en una ubicación segura.
Nota:
El secreto solo aparece una vez.
Certificate
Puede cargar un certificado en lugar de crear un secreto de cliente.
Para obtener más información sobre cómo agregar credenciales, consulte Agregar credenciales.
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 (aplicación) 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 Usuario, grupo o entidad de servicio y, después Seleccionar miembros.
Busque y seleccione la aplicación a la que desea asignar el rol.
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
El procedimiento recomendado consiste en configurar la identidad y las credenciales en las variables de entorno:
Variable | Descripción |
---|---|
AZURE_TENANT_ID |
El identificador de inquilino de Microsoft Entra. |
AZURE_CLIENT_ID |
Id. de cliente (aplicación) de un registro de aplicación en el inquilino. |
AZURE_CLIENT_SECRET |
Secreto de cliente generado para el registro de la aplicación. |
AZURE_CLIENT_CERTIFICATE_PATH |
Ruta de acceso a un certificado y un par de claves privadas en formato PEM o PFX, que puede autenticar el registro de la aplicación. |
AZURE_USERNAME |
El nombre de usuario, también conocido como Nombre principal de usuario (UPN), de una cuenta de usuario de Microsoft Entra. |
AZURE_PASSWORD |
Contraseña de la cuenta de usuario de Microsoft Entra. No se admite una contraseña para las cuentas con autenticación multifactor habilitada. |
Puede usar DefaultAzureCredential o EnvironmentCredential para configurar los puntos de conexión de Azure SignalR Service. Este es el código para DefaultAzureCredential
:
services.AddSignalR().AddAzureSignalR(option =>
{
option.Endpoints = new ServiceEndpoint[]
{
new ServiceEndpoint(new Uri("https://<resource-name>.service.signalr.net"), new DefaultAzureCredential())
};
});
Este es el código para EnvironmentCredential
:
services.AddSignalR().AddAzureSignalR(option =>
{
option.Endpoints = new ServiceEndpoint[]
{
new ServiceEndpoint(new Uri("https://<resource-name>.service.signalr.net"), new EnvironmentCredential())
};
});
Para obtener información sobre cómo funciona DefaultAzureCredential
, consulte clase DefaultAzureCredential.
Uso de credenciales específicas del punto de conexión
En su organización, es posible que quiera usar credenciales diferentes para distintos puntos de conexión.
En este escenario, puede usar ClientSecretCredential o ClientCertificateCredential:
services.AddSignalR().AddAzureSignalR(option =>
{
var credential1 = new ClientSecretCredential("tenantId", "clientId", "clientSecret");
var credential2 = new ClientCertificateCredential("tenantId", "clientId", "pathToCert");
option.Endpoints = new ServiceEndpoint[]
{
new ServiceEndpoint(new Uri("https://<resource1>.service.signalr.net"), credential1),
new ServiceEndpoint(new Uri("https://<resource2>.service.signalr.net"), credential2),
};
});
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:
clientId
clientSecret
tenantId
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: