Megosztás a következőn keresztül:


Kommunikáció a DPS-vel az MQTT protokoll használatával

Ez a cikk azt ismerteti, hogy az eszközök hogyan használhatják az MQTT protokollt az Azure IoT Device Provisioning Service (DPS) eszközvégponttal való kommunikációhoz. A DPS-eszközvégpont a következőkkel támogatja az eszközkapcsolatot:

A DPS nem teljes körű MQTT-közvetítő, és nem támogatja az MQTT v3.1.1 szabványban megadott összes viselkedést.

A DPS-vel folytatott összes eszközkommunikációt TLS használatával kell védeni. Ezért a DPS nem támogatja a nem biztonságos MQTT-kapcsolatokat az 1883-es porton keresztül.

Feljegyzés

A DPS jelenleg nem támogatja a TPM-igazolási mechanizmust használó eszközöket az MQTT protokollon keresztül.

Csatlakozás a DPS-hez

Az eszközök az MQTT protokoll használatával csatlakozhatnak egy DPS-példányhoz az alábbi lehetőségek bármelyikével:

Az MQTT protokoll használata közvetlenül egy eszközről

Ha egy eszköz nem tudja használni az eszköz SDK-jait, akkor is csatlakozhat a nyilvános eszközvégpontokhoz a 8883-es port MQTT protokolljával.

Fontos

Ez a cikk az eszközök közös hozzáférésű jogosultságkóddal, más néven szimmetrikus kulcshitelesítéssel való csatlakoztatásának lépéseit tartalmazza. Ez a hitelesítési módszer alkalmas tesztelésre és kiértékeléshez, de az eszköz hitelesítése X.509-tanúsítványokkal biztonságosabb módszer. További információkért tekintse meg az IoT-megoldások biztonsági javaslatait és a kapcsolatbiztonságot>.

A CONNECT-csomagban az eszköznek a következő értékeket kell használnia:

  • A ClientId mezőhöz használja a registrationId értéket.

  • A Felhasználónév mezőben használja {idScope}/registrations/{registration_id}/api-version=2019-03-31a {idScope}, és az {registration_id}.

    Feljegyzés

    Ha X.509-tanúsítványhitelesítést használ, a regisztrációs azonosítót az eszközre vonatkozó (végső entitású) tanúsítvány tulajdonosának általános neve (CN) adja meg. {registration_id} A Felhasználónév mezőben meg kell egyeznie az általános névvel.

  • A Jelszó mezőben használjon SAS-jogkivonatot. Az alábbi kódrészlet az SAS-jogkivonat formátumát mutatja be:

    SharedAccessSignature sr={URL-encoded-resourceURI}&sig={signature-string}&se={expiry}&skn=registration A resourceURI formátumnak a következőnek {idScope}/registrations/{registration_id}kell lennie: A házirend nevét (skn) be kell állítani a következőre: (registration).

    Feljegyzés

    Ha X.509-tanúsítványhitelesítést használ, az SAS-jogkivonat jelszavai nem szükségesek.

    Az SAS-jogkivonatok létrehozásának módjáról további információt a DPS-hez való hozzáférés vezérlésének biztonsági jogkivonatok szakaszában talál.

Az alábbi lista DPS-implementációspecifikus viselkedéseket tartalmaz:

  • A DPS nem támogatja az állandó munkameneteket. Minden munkamenetet nem állandóként kezel, függetlenül a CleanSession jelölő értékétől. A CleanSession értéket igaz értékre kell állítania.

  • Amikor egy eszközalkalmazás feliratkozik egy QoS 2-vel rendelkező témakörre, a DPS maximális QoS 1-et biztosít a SUBACK-csomagban . Ezt követően a DPS az 1. QoS használatával küld üzeneteket az eszköznek.

TLS-konfiguráció

Az MQTT protokoll közvetlen használatához az ügyfélnek TLS 1.2-n keresztül kell csatlakoznia. A lépés kihagyására tett kísérletek csatlakozási hibákkal meghiúsulnak.

Eszköz regisztrálása

Ha egy eszközt a DPS-ben szeretne regisztrálni, az eszköznek elő kell fizetnie a $dps/registrations/res/#-re, mint témakörszűrő. A témakörszűrő többszintű helyettesítő karaktere # lehetővé teszi, hogy az eszköz további tulajdonságokat kapjon a témakör nevében. A DPS nem engedélyezi a # vagy ? helyettesítő karakterek használatát az altémák szűréséhez. A DPS nem általános célú közzétételi-feliratkozási üzenetközvetítő, csak a dokumentált témakörneveket és témakörszűrőket támogatja.

Az eszköznek közzé kell tennie egy regisztrációs üzenetet a DPS-ben témakörnévként $dps/registrations/PUT/iotdps-register/?$rid={request_id}használva. A JSON formátumban megadott tehernek tartalmaznia kell az eszközregisztrációs objektumot.

Ha a kérés sikeres, az eszköz választ kap a $dps/registrations/res/202/?$rid={request_id}&retry-after=x téma nevére, ahol x az retry-after értéke másodpercben van megadva.

Szavazás a regisztrációs művelet állapotáról

Az eszköznek rendszeresen le kell kérdeznie a szolgáltatást, hogy megkapja az eszközregisztrációs művelet eredményét. Feltételezve, hogy az eszköz előfizetett a $dps/registrations/res/# témakörre, közzétehet egy lekéréses művelet állapotüzenetét a $dps/registrations/GET/iotdps-get-operationstatus/?$rid={request_id}&operationId={operationId} témakör nevére. Az üzenet műveletazonosítójának az előző lépés válaszüzenetében RegistrationOperationStatus kapott értéknek kell lennie. Ha a kérés sikeres, a szolgáltatás válaszol a $dps/registrations/res/200/?$rid={request_id} témakörre. A válasz hasznos terhe tartalmaz egy RegistrationOperationStatus objektumot. Az eszköznek továbbra is le kell kérdeznie a szolgáltatást, ha a válaszkód 202, a megadott retry-after időszaknak megfelelő késleltetés után. Az eszközregisztrációs művelet akkor sikeres, ha a szolgáltatás 200 állapotkódot ad vissza.

Csatlakozás WebSocketen keresztül

Ha a WebSocketen keresztül csatlakozik, adja meg az alprotocolt a következőként mqtt: . További információ: RFC 6455.

Következő lépések

Az MQTT protokollról további információt az MQTT dokumentációjában talál.

Az MQTT-mintakód tallózásához tekintse meg az MQTT-alkalmazásmintákat.