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 uma solução Mosquitto MQTT cloud pronta a usar que proporciona uma série de benefícios, incluindo:
- Trocas e transferências de mensagens ilimitadas.
- Autenticação de dispositivos ilimitada via uma API externa.
- ACLs avançadas em tópicos, utilizadores e ações.
- Nome de domínio personalizável seguro com HTTPS (por exemplo, https://mqtt.sua-empresa.com).
- Atualizações simplificadas com apenas um clique.
- Desempenho ótimo e segurança robusta alimentados por uma VM privada e dedicada.
Poupe tempo e simplifique a sua vida: leva apenas 5 minutos para experimentar a solução de Mosquitto MQTT cloud hosting da Stackhero!
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:
- acesso de leitura (1)
- acesso de escrita (2)
- acesso de leitura e escrita (3)
- 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.