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.
Este artículo muestra cómo autenticarse con los espacios de nombres de Azure Event Grid mediante un webhook o una función de Azure.
La autenticación de webhooks permite que los puntos de conexión HTTP externos (webhooks o funciones) autentiquen las conexiones de transporte de telemetría de colas de mensajes (MQTT) de forma dinámica. Este método utiliza la validación de JSON Web Token de Microsoft Entra ID para garantizar un acceso seguro.
Cuando un cliente intenta conectarse, el intermediario invoca un punto de conexión HTTP definido por el usuario que valida las credenciales, como los tokens de Firma de acceso compartido, los nombres de usuario y las contraseñas, o incluso realiza comprobaciones de la lista de revocación de certificados. El webhook evalúa la solicitud y devuelve una decisión para permitir o denegar la conexión, junto con metadatos opcionales para la autorización específica. Este enfoque admite directivas de autenticación flexibles y centralizadas en diversas flotas de dispositivos y casos de uso.
Prerrequisitos
- Un espacio de nombres de Event Grid con una identidad administrada asignada por el sistema o asignada por el usuario.
- Un webhook externo o una función de Azure.
- Acceso concedido a la identidad administrada del espacio de nombres de Event Grid a la función de Azure o webhook.
Pasos a nivel macro
Para usar la autenticación de webhook personalizada para los espacios de nombres, siga estos pasos:
- Cree un espacio de nombres y configure sus subrecursos.
- Habilite una identidad administrada en el espacio de nombres de Event Grid.
- Conceda a la identidad administrada acceso a la función o webhook de Azure.
- Configure los valores de webhook personalizados en el espacio de nombres de Event Grid.
- Conecte los clientes al espacio de nombres de Event Grid y autentíquese a través del webhook o la función.
Cree un espacio de nombres y configure sus subrecursos
Para crear un espacio de nombres y configurar sus subrecursos, siga las instrucciones de Inicio rápido: Publicación y suscripción a mensajes MQTT en un espacio de nombres de Event Grid con Azure Portal. Omita los pasos para crear un certificado y un cliente porque las identidades de cliente proceden del token proporcionado. Los atributos de cliente se basan en las notificaciones personalizadas del token de cliente. Los atributos de cliente se usan en la consulta del grupo de clientes, las variables de plantilla de tema y la configuración de enriquecimiento de enrutamiento.
Habilitación de una identidad administrada en el espacio de nombres de Event Grid
Para habilitar una identidad administrada asignada por el sistema en su espacio de nombres de Event Grid, use el siguiente comando:
az eventgrid namespace update --resource-group <resource group name> --name <namespace name> --identity "{type:systemassigned}"
Para obtener información sobre cómo configurar las identidades asignadas al sistema y a los usuarios mediante Azure Portal, consulte Habilitar la identidad administrada para un espacio de nombres de Event Grid.
Concesión de acceso adecuado a la identidad administrada a una función o webhook
Conceda a la identidad administrada del espacio de nombres de Event Grid un acceso adecuado a la función de Azure de destino o al webhook.
Para configurar la autenticación personalizada para una función de Azure, siga los pasos siguientes.
Crear una aplicación de Microsoft Entra
En la página de Información general de la aplicación, anote el valor de Id. de la aplicación (cliente).
En el menú de la izquierda, seleccione Exponer una API. Junto a URI de identificador de aplicación, seleccione Agregar.
Anote el valor de URI de id. de la aplicación en el panel Editar URI de id. de la aplicación y, a continuación, seleccione Guardar.
Configuración de la autenticación para una función de Azure
Si tiene una función básica de Azure creada desde Azure Portal, configure la autenticación y valide el token de Microsoft Entra ID que se creó utilizando una identidad gestionada.
Vaya a la aplicación de Azure Functions.
En el menú de la izquierda, seleccione Autenticación y, a continuación, seleccione Agregar proveedor de identidades.
En la página Añadir un proveedor de identidad, para Proveedor de identidad, seleccione Microsoft de la lista desplegable.
En la sección Registro de aplicaciones, especifique los valores de las siguientes propiedades:
Para Audiencias de token permitidas, añada el valor URI de id. de aplicación de la aplicación de Microsoft Entra que anotó anteriormente.
En la sección Comprobaciones adicionales, para Desarrollo de aplicaciones cliente, seleccione Permitir solicitudes de aplicaciones cliente específicas.
En el panel Aplicaciones cliente permitidas, introduzca el id. de cliente de la identidad administrada asignada por el sistema utilizada para generar el token. Puede encontrar este identificador en la aplicación empresarial del recurso de Microsoft Entra ID.
Elija otras opciones de configuración en función de sus requisitos específicos y, a continuación, seleccione Agregar.
Ahora, genere y use el token de id. de Microsoft Entra.
- Genere un token de Microsoft Entra ID usando la identidad administrada con el URI de id. de aplicación como recursos.
- Use este token para invocar la función de Azure incluyándola en el encabezado de solicitud.
Configuración de la autenticación de webhook personalizada en el espacio de nombres de Event Grid
Configure los ajustes de autenticación de webhook personalizados en su espacio de nombres de Event Grid utilizando Azure Portal y la CLI de Azure. Primero se crea el espacio de nombres y, a continuación, se actualiza.
Uso de Azure Portal
Vaya a su espacio de nombres de Event Grid enAzure Portal.
En la página Espacio de nombres de Event Grid, seleccione Configuración en el menú de la izquierda.
En la sección Autenticación de webhook personalizado, especifique los valores de las siguientes propiedades:
- Tipo de identidad administrada: seleccione Usuario asignado.
- Dirección URL del webhook: escriba el valor del punto de conexión de dirección URL donde el servicio de Event Grid envía solicitudes de webhook autenticadas mediante la identidad administrada especificada.
- URI de token de audiencia: introduzca el valor del id. de aplicación de Microsoft Entra o URI para obtener el token de acceso que se incluirá como token de portador en las solicitudes de entrega.
- Id. de inquilino de Microsoft Entra ID: escriba el valor del identificador de inquilino de Microsoft Entra que se usa para adquirir el token de portador para la entrega de webhook autenticada.
Selecciona Aplicar.
Uso de la CLI de Azure
Para actualizar su espacio de nombres con la configuración de autenticación de webhook personalizada, use el siguiente comando:
az eventgrid namespace update \
--resource-group <resource-group-name> \
--name <namespace-name> \
--api-version 2025-04-01-preview \
--identity-type UserAssigned \
--identity-user-assigned-identities "/subscriptions/XXXXXXXXXXX/resourcegroups/XXXXXXXXXXX/providers/Microsoft.ManagedIdentity/userAssignedIdentities/XXXXXXXXXXX={}" \
--set properties.isZoneRedundant=true \
properties.topicSpacesConfiguration.state=Enabled \
properties.topicSpacesConfiguration.clientAuthentication.webHookAuthentication.identity.type=UserAssigned \
properties.topicSpacesConfiguration.clientAuthentication.webHookAuthentication.identity.userAssignedIdentity="/subscriptions/XXXXXXXXXXX/resourcegroups/XXXXXXXXXXX/providers/Microsoft.ManagedIdentity/userAssignedIdentities/XXXXXXXXXXX" \
properties.topicSpacesConfiguration.clientAuthentication.webHookAuthentication.endpointUrl="https://XXXXXXXXXXX" \
properties.topicSpacesConfiguration.clientAuthentication.webHookAuthentication.azureActiveDirectoryApplicationIdOrUri="api://XXXXXXXXXXX/.default" \
properties.topicSpacesConfiguration.clientAuthentication.webHookAuthentication.azureActiveDirectoryTenantId="XXXXXXXXXXX"
Reemplace <NAMESPACE_NAME> y <RESOURCE_GROUP_NAME> por sus valores reales. Rellene los marcadores de posición de la suscripción, el grupo de recursos, la identidad, el id. de la aplicación, la URL y el id. del inquilino. Para mejorar el rendimiento y la fiabilidad de la autenticación basada en webhooks para el corredor MQTT de Event Grid, le recomendamos encarecidamente que habilite la compatibilidad con HTTP/2 para su punto de conexión de webhook.
Detalles de la API de webhook
Encabezados de solicitud
Autorización: token de portador
El token es un token de Microsoft Entra para la identidad administrada que se configuró para llamar al webhook.
Carga de solicitud
{
"clientId": "<string>",
"userName": "<string>",
"password": "<base64 encoded bytes>",
"authenticationMethod": "<string>",
"authenticationData": "<base64 encoded bytes>",
"clientCertificate": "<certificate in PEM format>",
"clientCertificateChain": "<certificates from chain in PEM format>"
}
Descripciones de campos de carga
| Campo | Obligatorio/opcional | Descripción |
|---|---|---|
clientId |
Obligatorio | Id. de cliente del paquete MQTT CONNECT. |
userName |
Opcional | Nombre de usuario del paquete MQTT CONNECT. |
password |
Opcional | Contraseña del paquete MQTT CONNECT en codificación Base64. |
authenticationMethod |
Opcional | Método de autenticación del paquete MQTT CONNECT (solo MQTT5). |
authenticationData |
Opcional | Datos de autenticación del paquete MQTT CONNECT en codificación Base64 (solo MQTT5). |
clientCertificate |
Opcional | Certificado de cliente en formato PEM. |
clientCertificateChain |
Opcional | Otros certificados proporcionados por el cliente necesarios para compilar la cadena desde el certificado de cliente al certificado de entidad de certificación. |
userProperties |
Opcional | Propiedades de usuario del paquete CONNECT (solo MQTT5). |
Carga de respuesta
Respuesta exitosa
HTTP/1.1 200 OK
Content-Type: application/json
{
"decision": "allow",
"clientAuthenticationName": "<string>",
"attributes": {
"attr": "<int/string/array_of_strings>",
...
},
"expiration": "<unix time format>"
}
Respuesta denegada
HTTP/1.1 400 Bad Request
Content-Type: application/json
{
"decision": "deny",
"errorReason": "<string>"
}
Descripciones de campos de respuesta
| Campo | Descripción |
|---|---|
decision (obligatorio) |
La decisión de autenticación es allow o deny. |
clientAuthenticationName |
Nombre de autenticación de cliente (nombre de identidad). (Obligatorio cuando decision se establece en allow). |
attributes |
Diccionario con atributos. La clave es el nombre del atributo y el valor es un entero, cadena o matriz. (Opcional cuando decision se establece en allow). |
expiration |
Fecha de expiración en formato de hora de Unix. (Opcional cuando decision se establece en allow). |
errorReason |
Mensaje de error si decision está establecido en deny. Este error se registra. (Opcional cuando decision se establece en deny). |
Ejemplos de tipos de atributos admitidos
"num_attr_pos": 1,
"num_attr_neg": -1,
"str_attr": "str_value",
"str_list_attr": [
"str_value_1",
"str_value_2"
]
Todos los tipos de datos correctos (número que se ajuste a <int32/string/array_of_strings>) se usan como atributos. En el ejemplo, las notificaciones num_attr_pos, num_attr_neg, str_attr y str_list_attr tienen tipos de datos correctos y se utilizan como atributos.