Mosquitto: Como funciona a autenticação API MQTT

Esta documentação faz parte do guia Autenticação API. Consulte o guia completo aqui: Como autenticar milhares de dispositivos usando uma API externa.

👋 Bem-vindo à documentação da Stackhero!

A Stackhero oferece-lhe um ambiente Mosquitto MQTT cloud totalmente gerido, concebido para garantir fiabilidade e flexibilidade:

  • Débito ilimitado de mensagens e transferências de dados, para que os seus workflows nunca encontrem limites artificiais.
  • Autenticação ilimitada de dispositivos através da sua própria API externa, facilitando o onboarding e a gestão de acessos.
  • ACLs avançadas para controlo detalhado sobre tópicos, utilizadores e ações.
  • Um domínio personalizado com HTTPS integrado para endpoints seguros e com a sua marca (por exemplo: https://mqtt.sua-empresa.com).
  • Atualizações sem complicações: aplique melhorias ou patches de segurança com um simples clique.
  • Desempenho consistente e segurança reforçada, com cada instância a funcionar numa infraestrutura privada e dedicada.

Acelere os seus projetos IoT e reduza o esforço operacional. Pode ter uma instância Mosquitto MQTT cloud hosting segura e pronta para produção em apenas alguns minutos.

Usar a autenticação API externa é particularmente útil quando tem mais de 20 dispositivos IoT ou quando precisa de uma gestão detalhada de ACLs de tópicos.

Quando um dispositivo se conecta ao MQTT, o Mosquitto envia um pedido HTTP POST à sua API. O pedido inclui um payload JSON contendo o nome de utilizador e a palavra-passe do dispositivo. Se a sua API retornar um código de estado HTTP 200, o dispositivo é autorizado. Qualquer código de estado diferente de 200 (como 401) resulta na negação de acesso ao dispositivo.

Durante a validação das ACLs, quatro parâmetros são transmitidos: username, clientid, topic e acc. A sua API deve verificar se o username está autorizado a realizar a operação definida por acc no topic. O parâmetro acc é definido da seguinte forma:

  1. acesso de leitura (1)
  2. acesso de escrita (2)
  3. acesso de leitura e escrita (3)
  4. acesso de subscrição (4)

Por exemplo, se o utilizador userA tentar subscrever o tópico sensors/temperatures, a sua API receberá o seguinte JSON:

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

Quando utiliza a autenticação de utilizador via uma API, ainda pode definir utilizadores manualmente no painel de controlo do Stackhero. Nesse caso, os utilizadores definidos manualmente terão prioridade.