Mosquitto: Cómo funciona la autenticación API MQTT

Esta documentación forma parte de la guía Autenticación API. Consulte la guía completa aquí: Cómo autenticar miles de dispositivos usando una API externa.

👋 ¡Bienvenido a la documentación de Stackhero!

Stackhero le ofrece un entorno Mosquitto MQTT en la nube totalmente gestionado, diseñado para ofrecer fiabilidad y flexibilidad:

  • Tráfico ilimitado de mensajes y transferencias de datos, para que sus flujos de trabajo nunca se vean limitados artificialmente.
  • Autenticación ilimitada de dispositivos a través de su propia API externa, facilitando la incorporación y la gestión de accesos.
  • ACLs avanzadas para un control detallado sobre topics, usuarios y acciones.
  • Un nombre de dominio personalizado con HTTPS integrado para endpoints seguros y con su propia marca (por ejemplo: https://mqtt.su-empresa.com).
  • Actualizaciones sin complicaciones: aplique mejoras o parches de seguridad con un solo clic.
  • Rendimiento constante y alta seguridad, con cada instancia ejecutándose en una infraestructura privada y dedicada.

Impulse sus proyectos IoT y reduzca la carga operativa. Puede tener una instancia de Mosquitto MQTT cloud hosting segura y lista para producción en solo unos minutos.

Usar la autenticación API externa es particularmente útil cuando tiene más de 20 dispositivos IoT o cuando necesita una gestión detallada de ACLs de temas.

Cuando un dispositivo se conecta a MQTT, Mosquitto envía una solicitud HTTP POST a su API. La solicitud incluye una carga JSON que contiene el nombre de usuario y la contraseña del dispositivo. Si su API devuelve un código de estado HTTP 200, el dispositivo está autorizado. Cualquier código de estado diferente de 200 (como 401) resulta en el rechazo del acceso del dispositivo.

Durante la validación de ACL, se transmiten cuatro parámetros: username, clientid, topic y acc. Su API debe verificar que el username está autorizado para realizar la operación definida por acc en el topic. El parámetro acc se define de la siguiente manera:

  1. acceso de lectura (1)
  2. acceso de escritura (2)
  3. acceso de lectura y escritura (3)
  4. acceso de suscripción (4)

Por ejemplo, si el usuario userA intenta suscribirse al tema sensors/temperatures, su API recibirá el siguiente JSON:

{
  "username": "userA",
  "clientid": "userA",
  "topic": "sensors/temperatures",
  "acc": 4
}

Cuando utiliza la autenticación de usuario a través de una API, aún puede definir usuarios manualmente en el panel de Stackhero. En ese caso, los usuarios definidos manualmente tendrán prioridad.