Générateur de Client ID MQTT
Générez jusqu’à 100 Client IDs MQTT uniques d’un coup — aléatoires, UUID, hex ou horodatés, avec votre propre préfixe. Activez le mode strict pour obtenir des IDs que tout broker MQTT 3.1.1 doit accepter.
Choisissez vos options puis cliquez sur « Générer des Client IDs ».
Les IDs sont générés dans votre navigateur avec la Web Crypto API et ne sont envoyés nulle part.
À quoi sert le Client ID MQTT
Chaque client MQTT envoie un identifiant de client dans son paquet CONNECT. Le broker s’en sert pour reconnaître le client d’une reconnexion à l’autre : c’est la clé sous laquelle il stocke la session — abonnements, messages QoS 1 et QoS 2 en file d’attente et acquittements en cours. Si un appareil se reconnecte avec le même ID et une session persistante, il reprend exactement là où il s’était arrêté. S’il se reconnecte avec un autre ID, le broker le considère comme un tout nouveau client et l’ancienne session subsiste jusqu’à son expiration.
Règle 1 : les Client IDs doivent être uniques
Un broker n’autorise qu’une connexion par Client ID. Lorsqu’une deuxième connexion arrive avec un ID déjà connecté, le broker ferme la première — en MQTT 5 avec le code de raison 0x8E Session taken over. C’est la cause la plus fréquente des signalements « mon client se déconnecte sans arrêt » : deux appareils flashés avec la même constante dans le firmware, une application web ouverte dans deux onglets ou un service déployé en deux réplicas. Les deux clients se reconnectent, s’éjectent mutuellement, et le cycle recommence toutes les quelques secondes. Voir les erreurs de connexion MQTT pour d’autres symptômes.
Un bon Client ID est stable pour un appareil donné (pour que les sessions persistantes fonctionnent) et unique sur tout le parc. Un schéma courant : un préfixe lisible suivi d’un élément propre à l’appareil — numéro de série, adresse MAC ou valeur aléatoire générée une fois et stockée en flash. Les clients navigateur et éphémères utilisent généralement un nouvel ID aléatoire à chaque connexion.
Règle 2 : la garantie des 23 caractères
La spécification MQTT 3.1.1 indique qu’un broker doit accepter les Client IDs de 1 à 23 octets composés uniquement de 0-9, a-z et A-Z, et peut accepter tout le reste. La plupart des brokers modernes acceptent des IDs bien plus longs avec tirets, underscores et deux-points, mais certains brokers embarqués ou anciens les refusent avec le code de retour 2 (identifier rejected) ou 0x85 Client Identifier not valid. Si vous ne maîtrisez pas le broker auquel vos appareils se connecteront, activez le mode strict ci-dessus. Les différences entre versions du protocole sont détaillées dans MQTT 5 vs 3.1.1.
Client IDs vides
Un client peut envoyer un Client ID de longueur nulle et laisser le broker en choisir un, mais uniquement avec une clean session (3.1.1) ou un clean start (5.0), car il n’existe alors aucune clé stable pour stocker une session. Les brokers MQTT 5 renvoient l’ID généré dans la propriété Assigned Client Identifier. Certains brokers désactivent cette fonction : générer votre propre ID reste donc le choix le plus portable.
Prêt à tester ? Collez un ID généré dans le client MQTT en ligne et connectez-vous à un broker public, ou ouvrez un second onglet avec le même ID pour observer un session takeover en direct.
FAQ sur le Client ID
Quelle longueur peut avoir un Client ID MQTT ?
MQTT 3.1.1 impose aux brokers d’accepter des Client IDs de 1 à 23 octets UTF-8 composés uniquement de 0-9, a-z et A-Z, et les autorise à en accepter davantage. MQTT 5 conserve la même garantie. En pratique, Mosquitto, EMQX, HiveMQ et la plupart des brokers cloud acceptent des IDs jusqu’à 65 535 octets avec n’importe quels caractères.
Que se passe-t-il si deux clients utilisent le même Client ID ?
Le broker coupe la connexion existante et accepte la nouvelle (un session takeover ; code de raison MQTT 5 0x8E). Si les deux clients se reconnectent automatiquement, ils s’éjectent mutuellement en boucle et semblent tous deux se déconnecter sans arrêt.
Puis-je utiliser un Client ID vide ?
Oui, si vous demandez une clean session (MQTT 3.1.1) ou un clean start (MQTT 5). Le broker attribue alors un ID unique ; MQTT 5 le renvoie dans la propriété Assigned Client Identifier. En MQTT 3.1.1, un ID vide ne peut pas être combiné avec une session persistante.
Le Client ID doit-il rester secret ?
Non. Les Client IDs sont des identifiants, pas des secrets : ils apparaissent dans les logs du broker et sont faciles à deviner. Authentifiez-vous toujours avec un nom d’utilisateur et un mot de passe, un jeton ou un certificat client, et utilisez des ACL pour empêcher un client d’en usurper un autre.