Si vous activez l'inscription dynamique dans la console IoT Platform, vous pouvez authentifier un appareil connecté directement à l'aide de la méthode d'authentification par certificat unique pour le produit. Ainsi, l'appareil peut se connecter à IoT Platform via le protocole MQTT (Message Queuing Telemetry Transport). L'appareil établit une connexion TLS (Transport Layer Security) avec IoT Platform afin d'obtenir le DeviceSecret requis pour une connexion MQTT. Ensuite, l'appareil ferme la connexion TLS et établit la connexion MQTT pour la communication. Cette rubrique décrit le processus d'inscription dynamique.
Prérequis
Avez effectué les étapes décrites dans la rubrique Authentification par certificat unique pour le produit :
La méthode d'authentification par certificat unique pour le produit sans pré-inscription est disponible uniquement dans la région Chine (Shanghai).
Créez un produit.
Activez l'inscription dynamique.
Ajoutez un appareil.
Installez les certificats d'appareil sur les appareils.
Processus d'inscription dynamique

-
L'appareil envoie un message CONNECT incluant les paramètres d'inscription dynamique pour établir une connexion.
RemarqueL'inscription dynamique prend uniquement en charge les connexions TLS. Lors de l'inscription dynamique, IoT Platform ne vérifie pas la durée de maintien de la connexion MQTT. Par conséquent, il n'est pas nécessaire de spécifier cette durée.
-
Endpoints MQTT pour les instances publiques et les instances Enterprise Edition : Pour plus d'informations, consultez Gérer l'endpoint d'une instance.
RemarqueSi vous souhaitez authentifier un appareil connecté directement à l'aide de la méthode d'authentification par certificat unique pour le produit sans pré-inscription, remplacez ${YourRegionId} par
cn-shanghai. -
Paramètres d'inscription dynamique du message CONNECT :
-
Si l'appareil est connecté à une instance publique de la nouvelle version ou à une instance Enterprise Edition, configurez les paramètres d'inscription dynamique suivants :
mqttClientId:clientId+"|securemode=-2,authType=xxxx,random=xxxx,signmethod=xxxx,instanceId=xxxx|" mqttUserName: deviceName+"&"+productKey mqttPassword:sign_hmac(productSecret,content) -
Si l'appareil est connecté à une instance publique de l'ancienne version, configurez les paramètres d'inscription dynamique suivants :
mqttClientId:clientId+"|securemode=2,authType=xxxx,random=xxxx,signmethod=xxxx|" mqttUserName: deviceName+"&"+productKey mqttPassword:sign_hmac(productSecret,content)
RemarquePour plus d'informations, consultez Présentation des instances IoT Platform.
Paramètres :
-
mqttClientId
Le tableau suivant décrit les paramètres inclus dans le paramètre mqttClientId.
Paramètre
Description
clientId
ID du client. L'ID client doit comporter entre 1 et 64 caractères. Nous vous recommandons d'utiliser l'adresse MAC (Media Access Control) ou le numéro de série (SN) de l'appareil comme ID client.
securemode
Mode de sécurité. Valeurs valides :
2 : méthode d'authentification par certificat unique pour le produit avec pré-inscription.
-2 : méthode d'authentification par certificat unique pour le produit sans pré-inscription.
authType
Méthode d'authentification. Les paramètres renvoyés varient selon la méthode d'authentification. Valeurs valides :
register : méthode d'authentification par certificat unique pour le produit avec pré-inscription. Si vous définissez ce paramètre sur cette valeur, un DeviceSecret est renvoyé.
regnwl : méthode d'authentification par certificat unique pour le produit sans pré-inscription. Si vous définissez ce paramètre sur cette valeur, un DeviceToken et un ClientID sont renvoyés.
random
Nombre aléatoire. Vous pouvez spécifier un nombre aléatoire.
signMethod
Algorithme de signature. Valeurs valides : hmacmd5, hmacsha1 et hmacsha256.
instanceId
ID de l'instance IoT. Vous pouvez vous connecter à la console IoT Platform et afficher l'ID de l'instance dans l'onglet Overview.
-
mqttUserName
Format :
deviceName+"&"+productKeyExemple :
device1&al123456789 -
mqttPassword
Méthode de calcul :
sign_hmac(productSecret,content)La valeur du paramètre content est une chaîne concaténée des paramètres et de leurs valeurs correspondantes qui doivent être soumis à IoT Platform. Les paramètres incluent deviceName, productKey et random. Les paramètres sont triés par ordre alphabétique et concaténés sans utiliser d'opérateurs de concaténation. Ensuite, la valeur du paramètre content est chiffrée selon l'algorithme spécifié par signMethod dans le paramètre mqttClientId. Le ProductSecret du produit sert de clé secrète pour l'algorithme.
Exemple :
hmac_sha1(h1nQFYPZS0mW****, deviceNamedevice1productKeyal123456789random123)
-
-
-
IoT Platform renvoie un message CONNECT ACK.
La valeur 0 indique que l'inscription dynamique a réussi.
Les autres valeurs indiquent un échec de l'inscription dynamique. Vous pouvez identifier la cause de l'échec en fonction du code d'erreur renvoyé dans le message ACK.
Le tableau suivant décrit les codes de réponse qui peuvent être renvoyés après l'envoi d'une demande de connexion par l'appareil à IoT Platform.
Code de réponse
Message
Description
0
CONNECTION_ACCEPTED
L'inscription dynamique a réussi.
2
IDENTIFIER_REJECTED
Les paramètres ne sont pas valides. Cette erreur peut survenir pour l'une des raisons suivantes :
Un ou plusieurs paramètres requis ne sont pas spécifiés ou leur format n'est pas valide.
Vous avez établi une connexion TCP directe pour l'inscription. L'inscription dynamique prend uniquement en charge les connexions TLS.
3
SERVER_UNAVAILABLE
Une erreur s'est produite dans IoT Platform. Réessayez ultérieurement.
4
BAD_USERNAME_OR_PASSWORD
L'inscription dynamique a échoué. L'appareil n'est pas authentifié.
Vérifiez si les valeurs des paramètres d'entrée mqttUserName et mqttPassword sont valides.
-
Une fois la connexion établie, IoT Platform utilise la rubrique dédiée à la transmission des certificats d'appareil pour renvoyer les paramètres d'authentification. Ces paramètres varient selon le paramètre authType présent dans le message CONNECT.
RemarqueL'appareil n'a pas besoin de s'abonner à la rubrique utilisée pour transmettre le certificat.
-
Si vous utilisez la méthode d'authentification par certificat unique pour le produit avec pré-inscription, définissez le paramètre authType sur register. Dans ce cas, la rubrique
/ext/registerest utilisée pour renvoyer un DeviceSecret.Le payload du message transmis par IoT Platform est au format suivant :
{ "productKey" : "***", "deviceName" : "***", "deviceSecret" : "***" } -
Si vous utilisez la méthode d'authentification par certificat unique pour le produit sans pré-inscription, définissez le paramètre authType sur regnwl. Dans ce cas, la rubrique
/ext/regnwlest utilisée pour renvoyer un ClientID et un DeviceToken.Le payload du message transmis par IoT Platform est au format suivant :
{ "productKey" : "***", "deviceName" : "***", "clientId" : "***", "deviceToken" : "***" }
-
-
L'appareil reçoit et enregistre le DeviceSecret ou la combinaison du ClientID et du DeviceToken, puis ferme la connexion MQTT actuelle.
L'appareil peut fermer la connexion actuelle en envoyant un message DISCONNECT ou en fermant la connexion TCP.
Si l'appareil ne ferme pas la connexion, IoT Platform déconnecte l'appareil après 15 secondes.
Si vous utilisez le client MQTT Eclipse Paho, utilisez la fonction
MqttConnectOptions.setAutomaticReconnect(false)pour désactiver la reconnexion automatique. Sinon, une nouvelle demande d'inscription dynamique sera générée selon la logique de reconnexion une fois l'inscription terminée et la connexion TCP fermée. Si vous utilisez la méthode d'authentification avec pré-inscription par certificat unique pour le produit, l'appareil utilise le DeviceSecret pour initier à nouveau une demande d'établissement d'une connexion MQTT entre l'appareil et IoT Platform afin de communiquer des messages. Si vous utilisez la méthode d'authentification sans pré-inscription par certificat unique pour le produit, l'appareil convertit le ClientID en mqttClientId, puis utilise la combinaison du mqttClientId et du DeviceToken pour établir la connexion MQTT. Pour plus d'informations, consultez Établir des connexions MQTT via TCP.
Exemple
Pour obtenir des informations sur l'exemple d'inscription dynamique d'un appareil connecté directement, consultez Inscription dynamique basée sur MQTT.