Inicio rápido: Publicación y suscripción a mensajes MQTT en el espacio de nombres de Event Grid con Azure Portal

En este artículo, se usa Azure Portal para realizar las siguientes tareas:

  1. Creación de un espacio de nombres de Event Grid y habilitación de MQTT broker
  2. Crear subrecursos como clientes, grupos de clientes y espacios de temas
  3. Conceder a los clientes acceso para publicar y suscribirse a espacios de temas
  4. Publicar y recibir mensajes entre clientes

Requisitos previos

  • Si no tiene una suscripción de Azure, cree una cuenta gratuita de Azure.
  • Si no está familiarizado con Azure Event Grid, lea la introducción a Event Grid antes de comenzar este tutorial.
  • Asegúrese de que el puerto 8883 está abierto en el firewall. En el ejemplo de este tutorial se usa el protocolo MQTT, que se comunica mediante el puerto 8883. Este puerto puede estar bloqueado en algunos entornos de red corporativos y educativos.
  • Necesita un certificado de cliente X.509 para generar la huella digital y autenticar la conexión de cliente.

Generación de un certificado de cliente de ejemplo y una huella digital

Si aún no tiene un certificado, puede crear un certificado de ejemplo mediante la CLI de Step. Considere la posibilidad de instalar manualmente para Windows.

Después de una instalación correcta de Step, debe abrir un símbolo del sistema en la carpeta de perfil de usuario (Win+R escriba %USERPROFILE%).

  1. Para crear certificados raíz e intermedios, ejecute el siguiente comando. Recuerde la contraseña, que deberá utilizar en el siguiente paso.

    step ca init --deployment-type standalone --name MqttAppSamplesCA --dns localhost --address 127.0.0.1:443 --provisioner MqttAppSamplesCAProvisioner
    
  2. Use los archivos de CA generados para crear un certificado para el primer cliente. Asegúrese de usar la ruta de acceso correcta para los archivos de certificado y secretos en el comando.

    step certificate create client1-authn-ID client1-authn-ID.pem client1-authn-ID.key --ca .step/certs/intermediate_ca.crt --ca-key .step/secrets/intermediate_ca_key --no-password --insecure --not-after 2400h
    
  3. Para ver la huella digital, ejecute el comando Step.

    step certificate fingerprint client1-authn-ID.pem
    
  4. Ahora, cree un certificado para el segundo cliente.

    step certificate create client2-authn-ID client2-authn-ID.pem client2-authn-ID.key --ca .step/certs/intermediate_ca.crt --ca-key .step/secrets/intermediate_ca_key --no-password --insecure --not-after 2400h
    
  5. Para ver la huella digital que se va a usar con el segundo cliente, ejecute el comando Step.

    step certificate fingerprint client2-authn-ID.pem
    

Creación de un espacio de nombres

  1. Inicie sesión en el portal de Azure.

  2. En la barra de búsqueda, escriba Espacios de nombres de Event Grid y, a continuación, seleccione Espacios de nombres de Event Grid en la lista desplegable.

    Screenshot of searching for Event Grid namespace on Azure portal.

  3. En la página Espacios de nombres de Event Grid, seleccione + Crear en la barra de herramientas.

  4. En la página Crear espacio de nombres, siga estos pasos:

    1. Seleccione su suscripción a Azure.

    2. Seleccione un grupo de recursos existente o Crear nuevo y escriba un nombre para el grupo de recursos.

    3. Proporcione un nombre único para el espacio de nombres. El nombre del espacio de nombres debe ser único en cada región porque representa una entrada DNS. No use el nombre que se muestra en la imagen. En su lugar, cree su propio nombre: debe tener entre 3 y 50 caracteres y contener solo los valores a-z, A-Z, 0-9 y -.

    4. Seleccione una ubicación para el espacio de nombres de Event Grid. Actualmente, el espacio de nombres de Event Grid solo está disponible en determinadas regiones.

      Screenshot showing Event Grid namespace create flow basics tab.

  5. En la parte inferior de la página, seleccione Revisar y crear.

  6. En la pestaña Revisar y crear de la página Crear espacio de nombres, seleccione Crear.

    Nota:

    Para simplificar el inicio rápido, solo usará la página Aspectos básicos para crear un espacio de nombres. Para obtener información detallada sobre la configuración de la red, la seguridad y otros parámetros en otras páginas del asistente, consulte Creación de un espacio de nombres.

  7. Cuando la implementación se haya realizado correctamente, seleccione Ir al recurso para acceder a la página Información general del espacio de nombres de Event Grid correspondiente a su espacio de nombres.

  8. En la página Información general, verá que MQTT broker está en estado Deshabilitado. Para habilitar MQTT broker, seleccione el vínculo Deshabilitado y le redirigirá a la página Configuración.

  9. En la página Configuración, seleccione la opción Habilitar MQTT broker y, a continuación, seleccione Aplicar para aplicar la configuración.

    Screenshot showing Event Grid namespace configuration page to enable MQTT.

Creación de clientes

  1. En el menú de la izquierda, seleccione Clientes en la sección MQTT broker.

  2. En la página Clientes, seleccione + Cliente en la barra de herramientas.

    Screenshot of the Clients page with Add button selected.

  3. En la página Crear cliente, escriba un nombre para el cliente. Los nombres de cliente deben ser únicos en un espacio de nombres.

  4. El nombre de autenticación de cliente tiene como valor predeterminado el nombre del cliente. Para este tutorial, cámbielo a client1-authn-ID. Debe incluir este nombre como Username en el paquete CONNECT.

  5. En este tutorial, usará la autenticación basada en huella digital. Incluya la huella digital del certificado de cliente en la huella digital principal.

    Screenshot of client 1 configuration.

  6. Seleccione Crear en la barra de herramientas para crear otro cliente.

  7. Repita los pasos anteriores para crear un segundo cliente denominado client2. Cambie el nombre de autenticación a client2-authn-ID e incluya la segunda huella digital del certificado de cliente en la huella digital principal.

    Screenshot of client 2 configuration.

    Nota:

    • Para simplificar el inicio rápido, usará la opción de Coincidencia de huella digital para la autenticación. Para obtener información detallada sobre el uso de la cadena de certificados de CA X.509 para la autenticación de cliente, consulte Autenticación de cliente mediante la cadena de certificados.
    • Además, usamos el grupo de clientes $all predeterminado, que incluye todos los clientes del espacio de nombres para este ejercicio. Para obtener más información sobre cómo crear grupos de cliente personalizados con atributos de cliente, consulte Grupos de clientes.

Creación de espacios de temas

  1. En el menú de la izquierda, seleccione Espacios de temas en la sección MQTT broker.

  2. En la página Espacios de tema, seleccione + Espacio de tema en la barra de herramientas.

    Screenshot of Topic spaces page with create button selected.

  3. Proporcione un nombre para el espacio del tema, en la página Crear espacio de temas.

  4. Seleccione + Agregar plantillade tema.

    Screenshot of Create topic space with the name.

  5. Escriba contosotopics/topic1 para la plantilla de tema y, a continuación, seleccione Crear para crear el espacio del tema.

    Screenshot of topic space configuration.

Configuración del control de acceso mediante enlaces de permisos

  1. En el menú de la izquierda, seleccione Enlaces de permisos en la sección MQTT broker.

  2. En la página Enlaces de permisos, seleccione + Enlace de permisos en la barra de herramientas.

    Screenshot that shows the Permission bindings page with the Create button selected.

  3. Configure el enlace de permisos de la siguiente manera:

    1. Proporcione un nombre para el enlace de permisos. Por ejemplo, contosopublisherbinding.

    2. En Nombre del grupo de clientes, seleccione $all.

    3. En Nombre del espacio del tema, seleccione el espacio del tema que creó en el paso anterior.

    4. Conceda permiso de Publicador al grupo de clientes en el espacio de tema.

      Screenshot showing creation of first permission binding.

  4. Seleccione Crear para crear el enlace de permisos.

  5. Cree un enlace de permisos adicional (contososubscriberbinding) seleccionando + Enlace de permisos en la barra de herramientas.

  6. Proporcione un nombre y dé al grupo de clientes $allSubscriber acceso al ContosoTopicSpace como se muestra.

    Screenshot showing creation of second permission binding.

  7. Seleccione Crear para crear el enlace de permisos.

Conexión de los clientes al espacio de nombres EG mediante la aplicación MQTTX

  1. Para publicar o suscribirse a mensajes MQTT, puede usar cualquiera de sus herramientas favoritas. Con fines de demostración, la publicación y suscripción se muestra con la aplicación MQTTX, que se puede descargar de https://mqttx.app/.

    Screenshot showing MQTTX app left rail to add new client.

  2. Configure cliente1 con:

    • Nombre como client1 (este valor puede ser cualquier cosa)

    • Un id. de cliente como client1-session1 (el identificador de cliente del paquete CONNECT se usa para identificar el identificador de sesión de la conexión de cliente)

    • Nombre de usuario como client1-authn-ID. Este valor debe coincidir con el valor de Nombre de autenticación de cliente que especificó al crear el cliente en Azure Portal.

      Importante

      El nombre de usuario debe coincidir con el nombre de autenticación de cliente en los metadatos del cliente.

  3. Actualice el nombre de host al nombre de host MQTT desde la página Información general del espacio de nombres.

    Screenshot showing Event Grid namespace overview page, which has MQTT hostname.

  4. Actualización del puerto a 8883.

  5. Cambie SSL/TLS a ACTIVADO.

  6. Cambie SSL Secure a ACTIVADO para garantizar la validación del certificado de servicio.

  7. Seleccione Certificado como Autofirmado.

  8. Proporcione la ruta de acceso para el archivo de certificado de cliente.

  9. Proporcione la ruta de acceso para el archivo de clave de cliente.

  10. El resto de la configuración se puede dejar con los valores predeterminados predefinidos.

    Screenshot showing client 1 configuration part 1 on MQTTX app.

  11. Seleccione Conectar para conectar el cliente a MQTT broker.

  12. Repita los pasos anteriores para conectar el segundo cliente cliente2, con la información de autenticación correspondiente como se muestra.

    Screenshot showing client 2 configuration part 1 on MQTTX app.

    Screenshot showing client 2 configuration part 2 on MQTTX app.

Publicación y suscripción mediante la aplicación MQTTX

  1. Después de conectar los clientes, para cliente2, seleccione el botón + Nueva suscripción.

  2. Agregue contosotopics/topic1 como tema y seleccione Confirmar. Puede dejar los demás campos con los valores predeterminados existentes.

    Screenshot showing subscription topic configuration on MQTTX app.

  3. Seleccione cliente1 en el raíl izquierdo.

  4. Para client1, en la parte superior del cuadro de redacción de mensajes, escriba contosotopics/topic1 como tema en el que se va a publicar.

  5. Redacte un mensaje. Puede usar cualquier formato o JSON como se muestra.

  6. Seleccione el botón Enviar.

    Screenshot showing message publishing on the topic in MQTTX app.

  7. El mensaje debe verse como Publicado en el cliente 1.

    Screenshot showing message published on the topic in MQTTX app.

  8. Cambie a client2. Confirme que client2 recibió el mensaje.

    Screenshot showing the message received by the subscribing client on MQTTX app.

Pasos siguientes