Szimmetrikus kulcsok használata HTTPS-en keresztül SDK nélkül
Ebben az útmutatócikkben szimmetrikus kulcsokkal épít ki egy eszközt HTTPS-en keresztül, azure IoT DPS-eszköz SDK használata nélkül. A legtöbb nyelv http-kérések küldéséhez biztosít kódtárakat, de ahelyett, hogy egy adott nyelvre összpontosítanál, ebben a cikkben a cURL parancssori eszköz használatával küldhet és fogadhat HTTPS-en keresztül.
A cikkben leírt lépéseket linuxos vagy Windows rendszerű gépeken is követheti. Ha Linuxos Windows-alrendszer (WSL) vagy Linux rendszerű gépen fut, egy Bash-parancssorban megadhatja a helyi rendszer összes parancsát. Ha Windows rendszeren fut, írja be a helyi rendszer összes parancsát egy GitBash-parancssorba.
A cikk különböző elérési utakat mutat a használni kívánt regisztrációs bejegyzés típusától függően. Az előfeltételek telepítése után mindenképpen olvassa el az Áttekintést a folytatás előtt.
Előfeltételek
Ha még nincs Azure-előfizetése, kezdés előtt hozzon létre egy ingyenes fiókot.
Hajtsa végre az IoT Hub Device Provisioning Service azure portallal való beállításának lépéseit.
Győződjön meg arról, hogy a Python 3.7 vagy újabb verziója telepítve van a számítógépen. A Python verzióját a futtatással
python --version
ellenőrizheti.Ha Windows rendszeren fut, telepítse a Git legújabb verzióját. Győződjön meg arról, hogy a Git hozzá van adva a parancsablakhoz elérhető környezeti változókhoz. Tekintse meg a Software Freedom Conservancy Git-ügyféleszközeit a telepíteni kívánt eszközök legújabb verziójához
git
, amely tartalmazza a Git Basht, a helyi Git-adattárral való interakcióhoz használható parancssori alkalmazást. Windows rendszeren egy GitBash-parancssorban adja meg a helyi rendszer összes parancsát.Azure parancssori felület (CLI). Ebben a cikkben két lehetősége van az Azure CLI-parancsok futtatására:
- Használja az Azure Cloud Shellt, amely egy interaktív rendszerhéj, amely parancssori felületi parancsokat futtat a böngészőben. Ez a beállítás azért ajánlott, mert nem kell semmit telepítenie. Ha először használja a Cloud Shellt, jelentkezzen be az Azure Portalra. Kövesse a Cloud Shell rövid útmutatójának lépéseit a Cloud Shell elindításához és a Bash-környezet kiválasztásához.
- Igény szerint futtassa az Azure CLI-t a helyi gépen. Ha az Azure CLI már telepítve van, futtassa
az upgrade
a parancssori felület és a bővítmények frissítését az aktuális verzióra. Az Azure CLI telepítéséhez lásd az Azure CLI telepítését.
Ha Linux- vagy WSL-környezetben fut, nyisson meg egy Bash-kérést a parancsok helyi futtatásához. Ha Windows-környezetben fut, nyisson meg egy GitBash-parancssort.
Áttekintés
Ebben a cikkben egyéni regisztrációt vagy regisztrációs csoportot használhat a DPS-ben történő kiépítéshez.
Egyéni regisztráció esetén végezze el a Use individual enrollment (Egyéni regisztráció használata) műveletet.
Regisztrációs csoport esetén végezze el a Regisztrációs csoport használata elemet.
Miután létrehozta az egyéni regisztrációs vagy regisztrációs csoportbejegyzést, hozzon létre egy SAS-jogkivonatot , és regisztrálja az eszközt a DPS-ben.
Egyéni regisztráció használata
Ha új egyéni regisztrációt szeretne létrehozni ehhez a cikkhez, az az iot dps enrollment create paranccsal létrehozhat egy egyéni regisztrációt a szimmetrikus kulcsigazoláshoz.
Az alábbi parancs létrehoz egy regisztrációs bejegyzést a DPS-példány alapértelmezett foglalási szabályzatával, és lehetővé teszi a DPS számára az eszköz elsődleges és másodlagos kulcsainak hozzárendelését:
az iot dps enrollment create -g {resource_group_name} --dps-name {dps_name} --enrollment-id {enrollment_id} --attestation-type symmetrickey
Cserélje le az erőforráscsoport és a DPS-példány nevét.
A regisztrációs azonosító az eszköz regisztrációs azonosítója. A regisztrációs azonosító egy kis- és nagybetűket nem megkülönböztető sztring (legfeljebb 128 karakter hosszú) alfanumerikus karakterekből és a speciális karakterekből:
'-'
,'.'
,'_'
.':'
Az utolsó karakternek alfanumerikusnak vagy kötőjelnek ('-'
) kell lennie. Győződjön meg arról, hogy a parancsban használt regisztrációs azonosító megfelel ennek a formátumnak.
A hozzárendelt szimmetrikus kulcsokat a rendszer a válasz igazolási tulajdonságában adja vissza:
{
"allocationPolicy": null,
"attestation": {
"symmetricKey": {
"primaryKey": "G3vn0IZH9oK3d4wsxFpWBtd2KUrtjI+39dZVRf26To8w9OX0LaFV9yZ93ELXY7voqHEUsNhnb9bt717UP87KxA==",
"secondaryKey": "4lNxgD3lUAOEOied5/xOocyiUSCAgS+4b9OvXLDi8ug46/CJzIn/3rN6Ys6gW8SMDDxMQDaMRnIoSd1HJ5qn/g=="
},
"tpm": null,
"type": "symmetricKey",
"x509": null
},
...
}
Jegyezze fel az egyéni regisztrációs bejegyzés elsődleges kulcsát és regisztrációs azonosítóját (regisztrációs azonosítóját), amelyet a cikk későbbi részében fog használni.
Ha meglévő egyéni regisztrációt szeretne használni ehhez a cikkhez, az elsődleges kulcsot az az iot dps enrollment show paranccsal szerezheti be :
az iot dps enrollment show -g {resource_group_name} --dps-name {dps_name} --enrollment-id {enrollment_id} --show-keys true
Regisztrációs csoport használata
Ha új regisztrációs csoportot szeretne létrehozni ehhez a cikkhez, az az iot dps enrollment-group create paranccsal létrehozhat egy regisztrációs csoportot a szimmetrikus kulcsigazoláshoz.
A következő parancs létrehoz egy regisztrációscsoport-bejegyzést a DPS-példány alapértelmezett foglalási szabályzatával, és lehetővé teszi a DPS számára a regisztrációs csoport elsődleges és másodlagos kulcsainak hozzárendelését:
az iot dps enrollment-group create -g {resource_group_name} --dps-name {dps_name} --enrollment-id {enrollment_id}
Cserélje le az erőforráscsoport és a DPS-példány nevét.
A regisztrációs azonosító egy kis- és nagybetűket nem megkülönböztető sztring (legfeljebb 128 karakter hosszú) alfanumerikus karakterekből és a speciális karakterekből:
'-'
,'.'
,'_'
.':'
Az utolsó karakternek alfanumerikusnak vagy kötőjelnek ('-'
) kell lennie. Bármilyen nevet megadhat, amelyet a regisztrációs csoporthoz használ.
A hozzárendelt szimmetrikus kulcsokat a rendszer a válasz igazolási tulajdonságában adja vissza:
{
"allocationPolicy": null,
"attestation": {
"symmetricKey": {
"primaryKey": "G3vn0IZH9oK3d4wsxFpWBtd2KUrtjI+39dZVRf26To8w9OX0LaFV9yZ93ELXY7voqHEUsNhnb9bt717UP87KxA==",
"secondaryKey": "4lNxgD3lUAOEOied5/xOocyiUSCAgS+4b9OvXLDi8ug46/CJzIn/3rN6Ys6gW8SMDDxMQDaMRnIoSd1HJ5qn/g=="
},
"tpm": null,
"type": "symmetricKey",
"x509": null
},
...
}
Jegyezze fel az elsődleges kulcsot.
Ha meglévő egyéni regisztrációt szeretne használni ehhez a cikkhez, az elsődleges kulcsot az az iot dps enrollment-group show paranccsal szerezheti be :
az iot dps enrollment-group show -g {resource_group_name} --dps-name {dps_name} --enrollment-id {enrollment_id} --show-keys true
Eszközkulcs származtatása
Ha szimmetrikus kulcsigazolást használ csoportregisztrációkkal, nem használja közvetlenül a regisztrációs csoportkulcsokat. Ehelyett minden eszközhöz egy egyedi kulcsot a regisztrációs csoportkulcsból származtat. További információ: Csoportos regisztráció szimmetrikus kulcsokkal.
Ebben a szakaszban egy eszközkulcsot fog létrehozni a regisztrációs csoport elsődleges kulcsából az eszköz egyedi regisztrációs azonosítójának HMAC-SHA256 kiszámításához. Az eredmény ezután Base64 formátumba lesz konvertálva.
Hozza létre az egyedi kulcsot az openssl használatával. A következő Bash-rendszerhéj-szkriptet fogja használni. Cserélje le
{primary-key}
a regisztrációs csoport korábban másolt elsődleges kulcsára, és cserélje le{contoso-simdevice}
az eszközhöz használni kívánt regisztrációs azonosítóra. A regisztrációs azonosító egy kis- és nagybetűket nem megkülönböztető sztring (legfeljebb 128 karakter hosszú) alfanumerikus karakterekből és a speciális karakterekből:'-'
,'.'
,'_'
.':'
Az utolsó karakternek alfanumerikusnak vagy kötőjelnek ('-'
) kell lennie.KEY={primary-key} REG_ID={contoso-simdevice} keybytes=$(echo $KEY | base64 --decode | xxd -p -u -c 1000) echo -n $REG_ID | openssl sha256 -mac HMAC -macopt hexkey:$keybytes -binary | base64
A szkript a következő kulcshoz hasonló kimenetet ad ki:
p3w2DQr9WqEGBLUSlFi1jPQ7UWQL4siAGy75HFTFbf8=
Jegyezze fel a származtatott eszközkulcsot és a létrehozásához használt regisztrációs azonosítót, a következő szakaszban fogja használni őket.
Az Azure CLI-vel vagy a PowerShell-lel is levezetheti az eszközkulcsot. További információ: Eszközkulcs származtatása.
SAS-jogkivonat létrehozása
Szimmetrikus kulcsigazolás használatakor az eszközök közös hozzáférésű jogosultságkód (SAS) jogkivonat használatával hitelesítik a DPS-t. Az egyéni regisztráción keresztül létesített eszközök esetében a jogkivonat a regisztrációs bejegyzésben megadott elsődleges vagy másodlagos kulcskészlettel van aláírva. A regisztrációs csoporton keresztül létesített eszközök esetében a jogkivonat egy származtatott eszközkulcs használatával van aláírva, amely viszont a regisztrációs csoport bejegyzésében beállított elsődleges vagy másodlagos kulcs használatával lett létrehozva. A jogkivonat egy lejárati időt és egy célerőforrás URI-jának megadása.
Sas-jogkivonat létrehozásához a következő Python-szkript használható:
from base64 import b64encode, b64decode
from hashlib import sha256
from time import time
from urllib.parse import quote_plus, urlencode
from hmac import HMAC
def generate_sas_token(uri, key, policy_name, expiry=3600):
ttl = time() + expiry
sign_key = "%s\n%d" % ((quote_plus(uri)), int(ttl))
print(sign_key)
signature = b64encode(HMAC(b64decode(key), sign_key.encode('utf-8'), sha256).digest())
rawtoken = {
'sr' : uri,
'sig': signature,
'se' : str(int(ttl))
}
if policy_name is not None:
rawtoken['skn'] = policy_name
return 'SharedAccessSignature ' + urlencode(rawtoken)
uri = '[resource_uri]'
key = '[device_key]'
expiry = [expiry_in_seconds]
policy= '[policy]'
print(generate_sas_token(uri, key, policy, expiry))
Ahol:
[resource_uri]
A jogkivonattal elérni kívánt erőforrás URI-ja. A DPS esetében ez az űrlap[dps_id_scope]/registrations/[dps_registration_id]
, ahol[dps_id_scope]
a DPS-példány azonosítójának hatóköre található, és[dps_registration_id]
az eszközhöz használt regisztrációs azonosító.A DPS-példány azonosítójának hatókörét lekérheti a példány Áttekintés paneljén az Azure Portalon, vagy használhatja az iot dps show Azure CLI parancsot (cserélje le a helyőrzőket az erőforráscsoport és a DPS-példány nevére):
az iot dps show -g {resource_group_name} --name {dps_name}
[device_key]
az eszközhöz társított eszközkulcs. Ez a kulcs vagy az egyéni regisztrációban megadott vagy automatikusan létrehozott kulcs, vagy egy csoportregisztráció származtatott kulcsa.Ha egyéni regisztrációt használ, használja az egyéni regisztrációban mentett elsődleges kulcsot.
Ha regisztrációs csoportot használ, használja a Regisztrációs csoport használata csoportban létrehozott származtatott eszközkulcsot.
[expiry_in_seconds]
az SAS-jogkivonat érvényességi ideje másodpercben.[policy]
az a szabályzat, amelyhez az eszközkulcs társítva van. A DPS-eszközregisztráció esetében a szabályzat keményen "regisztrációra" van kódolt.
Egy 30 napos érvényességi időtartamú eszköz my-symkey-device
bemeneteinek példakészlete így nézhet ki.
uri = '0ne00111111/registrations/my-symkey-device'
key = '18RQk/hOPJR9EbsJlk2j8WA6vWaj/yi+oaYg7zmxfQNdOyMSu+SJ8O7TSlZhDJCYmn4rzEiVKIzNiVAWjLxrGA=='
expiry = 2592000
policy='registration'
Módosítsa az eszköz és a DPS-példány parancsfájlját, és mentse Python-fájlként; például generate_token.py. Futtassa például a szkriptet python generate_token.py
. A következőhöz hasonló SAS-jogkivonatot kell kihoznia:
0ne00111111%2Fregistrations%2Fmy-symkey-device
1663952627
SharedAccessSignature sr=0ne00111111%2Fregistrations%2Fmy-symkey-device&sig=eNwg52xQdFTNf7bgPAlAJBCIcONivq%2Fck1lf3wtxI4A%3D&se=1663952627&skn=registration
Másolja és mentse a teljes sort, amely a következővel SharedAccessSignature
kezdődik: . Ez a sor az SAS-jogkivonat. A következő szakaszokban szüksége lesz rá.
Az SAS-jogkivonatok DPS-sel és azok szerkezetével való használatáról további információt a DPS-hez való hozzáférés szabályozása sassal című témakörben talál.
Eszköz regisztrálása
Meghívja az Eszközregisztrációs REST API-t az eszköz DPS-ben való üzembe helyezéséhez.
Használja a következő curl parancsot:
curl -L -i -X PUT -H 'Content-Type: application/json' -H 'Content-Encoding: utf-8' -H 'Authorization: [sas_token]' -d '{"registrationId": "[registration_id]"}' https://global.azure-devices-provisioning.net/[dps_id_scope]/registrations/[registration_id]/register?api-version=2019-03-31
Ahol:
-L
A curl a HTTP-átirányítások követésére utasítja.–i
azt jelzi, hogy a curl protokollfejléceket tartalmaz a kimenetben. Ezek a fejlécek nem feltétlenül szükségesek, de hasznosak lehetnek.-X PUT
a curl azt jelzi, hogy ez egy HTTP PUT parancs. Ehhez az API-híváshoz szükséges.-H 'Content-Type: application/json'
azt jelzi a DPS-nek, hogy JSON-tartalmat teszünk közzé, és "alkalmazásnak/jsonnak" kell lennie.-H 'Content-Encoding: utf-8'
jelzi a DPS-nek az üzenet törzséhez használt kódolást. Állítsa be az operációs rendszer/ügyfél megfelelő értékét; azonban általábanutf-8
.-H 'Authorization: [sas_token]'
a DPS-t arra utasítja, hogy hitelesítse az SAS-jogkivonattal. Cserélje le a [sas_token] elemet az SAS-jogkivonat létrehozása során létrehozott jogkivonatra.-d '{"registrationId": "[registration_id]"}'
, a–d
paraméter a közzétett üzenet "adata" vagy törzse. JSON-nak kell lennie, "{"registrationId":"[registration_id"}" formában. Vegye figyelembe, hogy a curl esetében egyetlen idézőjelbe van csomagolva; ellenkező esetben meg kell szabadulnia a JSON-ban szereplő idézőjelek elől.Végül az utolsó paraméter a közzéteendő URL-cím. A "normál" (azaz nem helyszíni) DPS esetében a globális DPS-végpontot ( global.azure-devices-provisioning.net) használja a rendszer:
https://global.azure-devices-provisioning.net/[dps_id_scope]/registrations/[registration_id]/register?api-version=2019-03-31
. Vegye figyelembe, hogy a megfelelő értékeket kell lecserélnie[dps_scope_id]
és[registration_id]
használnia.
Példa:
curl -L -i -X PUT -H 'Content-Type: application/json' -H 'Content-Encoding: utf-8' -H 'Authorization: SharedAccessSignature sr=0ne00111111%2Fregistrations%2Fmy-symkey-device&sig=eNwg52xQdFTNf7bgPAlAJBCIcONivq%2Fck1lf3wtxI4A%3D&se=1663952627&skn=registration' -d '{"registrationId": "my-symkey-device"}' https://global.azure-devices-provisioning.net/0ne00111111/registrations/my-symkey-device/register?api-version=2021-06-01
A sikeres hívásokra a következőhöz hasonló válasz fog reagálni:
HTTP/1.1 202 Accepted
Date: Wed, 31 Aug 2022 22:02:49 GMT
Content-Type: application/json; charset=utf-8
Transfer-Encoding: chunked
Location: https://global.azure-devices-provisioning.net/0ne00111111/registrations/my-symkey-device/register
Retry-After: 3
x-ms-request-id: a021814f-0cf6-4ce9-a1e9-ead7eb5118d9
Strict-Transport-Security: max-age=31536000; includeSubDomains
{"operationId":"5.316aac5bdc130deb.b1e02da8-c3a0-4ff2-a121-7ea7a6b7f550","status":"assigning"}
A válasz egy műveletazonosítót és egy állapotot tartalmaz. Ebben az esetben az állapot a következőre assigning
van állítva: . A DPS-regisztráció valószínűleg egy hosszú ideig futó művelet, ezért aszinkron módon történik. Az állapotot általában az Operation Status Lookup REST API használatával fogja lekérdezni annak megállapításához, hogy mikor lett hozzárendelve az eszköz, vagy hogy hiba történt-e.
A DPS érvényes állapotértékei a következők:
assigned
: az állapothívás visszatérési értéke jelzi, hogy az eszköz melyik IoT Hubhoz lett hozzárendelve.assigning
: a művelet továbbra is fut.disabled
: a regisztrációs rekord le van tiltva a DPS-ben, így az eszköz nem rendelhető hozzá.failed
: a hozzárendelés nem sikerült. A válaszban megjelenik egyerrorCode
registrationState
rekord, amelyerrorMessage
jelzi, hogy mi nem sikerült.unassigned
Az Operation Status Lookup API meghívásához használja a következő curl parancsot:
curl -L -i -X GET -H 'Content-Type: application/json' -H 'Content-Encoding: utf-8' -H 'Authorization: [sas_token]' https://global.azure-devices-provisioning.net/[dps_id_scope]/registrations/[registration_id]/operations/[operation_id]?api-version=2019-03-31
Ugyanazt az azonosító-hatókört, regisztrációs azonosítót és SAS-jogkivonatot fogja használni, mint az eszközregisztrációs kérelemben. Használja az eszközregisztrálási válaszban visszaadott műveletazonosítót.
Példa:
curl -L -i -X GET -H 'Content-Type: application/json' -H 'Content-Encoding: utf-8' -H 'Authorization: SharedAccessSignature sr=0ne00111111%2Fregistrations%2Fmy-symkey-device&sig=eNwg52xQdFTNf7bgPAlAJBCIcONivq%2Fck1lf3wtxI4A%3D&se=1663952627&skn=registration' https://global.azure-devices-provisioning.net/0ne00111111/registrations/my-symkey-device/operations/5.316aac5bdc130deb.f4f1828c-4dab-4ca9-98b2-dfc63b5835d6?api-version=2021-06-01
Az alábbi kimenet egy sikeresen hozzárendelt eszköz válaszát mutatja. Figyelje meg, hogy a status
tulajdonság az assigned
, és hogy a registrationState.assignedHub
tulajdonság az IoT Hubra van állítva, ahol az eszköz ki lett építve.
HTTP/1.1 200 OK
Date: Wed, 31 Aug 2022 22:05:23 GMT
Content-Type: application/json; charset=utf-8
Transfer-Encoding: chunked
x-ms-request-id: ffb98d42-023e-4e75-afb0-1807ff091cbb
Strict-Transport-Security: max-age=31536000; includeSubDomains
{
"operationId":"5.316aac5bdc130deb.b1e02da8-c3a0-4ff2-a121-7ea7a6b7f550",
"status":"assigned",
"registrationState":{
"registrationId":"my-symkey-device",
"createdDateTimeUtc":"2022-08-31T22:02:50.5163352Z",
"assignedHub":"MyExampleHub.azure-devices.net",
"deviceId":"my-symkey-device",
"status":"assigned",
"substatus":"initialAssignment",
"lastUpdatedDateTimeUtc":"2022-08-31T22:02:50.7370676Z",
"etag":"IjY5MDAzNTUyLTAwMDAtMDMwMC0wMDAwLTYzMGZkYThhMDAwMCI="
}
}
Telemetriai üzenet küldése
Mielőtt telemetriai üzenetet küldhet, létre kell hoznia egy SAS-jogkivonatot ahhoz az IoT Hubhoz, amelyhez az eszközt hozzárendelték. Ezt a jogkivonatot ugyanazzal az elsődleges kulccsal vagy származtatott eszközkulcstal írja alá, mint a DPS-példány SAS-tokenjének aláírásához.
SAS-jogkivonat létrehozása az IoT Hubhoz
Az SAS-jogkivonat létrehozásához ugyanazt a kódot futtathatja, mint a DPS-példány jogkivonatának létrehozásához a következő módosításokkal:
uri = '[resource_uri]'
key = '[device_key]'
expiry = [expiry_in_seconds]
policy= None
Ahol:
[resource_uri]
A jogkivonattal elérni kívánt erőforrás URI-ja. Az IoT Hubnak üzeneteket küldő eszköz esetében az űrlap[iot-hub-host-name]/devices/[device-id]
.Ehhez
[iot-hub-host-name]
használja az előző szakaszban aassignedHub
tulajdonságban visszaadott IoT Hub-állomásnevet.Ehhez
[device-id]
használja az előző szakaszban adeviceId
tulajdonságban visszaadott eszközazonosítót.
[device_key]
az eszközhöz társított eszközkulcs. Ez a kulcs vagy az egyéni regisztrációban megadott vagy automatikusan létrehozott kulcs, vagy egy csoportregisztráció származtatott kulcsa. (Ugyanaz a kulcs, amelyet korábban használt a DPS-jogkivonat létrehozásához.)Ha egyéni regisztrációt használ, használja az egyéni regisztrációban mentett elsődleges kulcsot.
Ha regisztrációs csoportot használ, használja a Regisztrációs csoport használata csoportban létrehozott származtatott eszközkulcsot.
[expiry_in_seconds]
az SAS-jogkivonat érvényességi ideje másodpercben.policy=None
Nincs szükség szabályzatra ahhoz, hogy egy eszköz telemetriát küldjön egy IoT Hubnak, ezért ez a paraméter a következőreNone
van állítva: .
Egy egy egyórás jogkivonat-érvényességi időtartammal rendelkező MyExampleHub
IoT Hubra küldött eszköz my-symkey-device
bemeneteinek példakészlete a következőképpen nézhet ki:
uri = 'MyExampleHub.azure-devices.net/devices/my-symkey-device'
key = '18RQk/hOPJR9EbsJlk2j8WA6vWaj/yi+oaYg7zmxfQNdOyMSu+SJ8O7TSlZhDJCYmn4rzEiVKIzNiVAWjLxrGA=='
expiry = 3600
policy= None
Az alábbi kimenet egy SAS-mintajogkivonatot jelenít meg ezekhez a bemenetekhez:
SharedAccessSignature sr=MyExampleHub.azure-devices.net%2Fdevices%2Fmy-symkey-device&sig=f%2BwW8XOKeJOtiPc9Iwjc4OpExvPM7NlhM9qxN2a1aAM%3D&se=1663119026
Ha többet szeretne megtudni az SAS-jogkivonatok IoT Hubhoz való létrehozásáról, beleértve más programozási nyelvek példakódját, olvassa el az IoT Hub hozzáférésének vezérlése megosztott hozzáférésű jogosultságkódok használatával című témakört.
Feljegyzés
Kényelmesen használhatja az Azure CLI az iot hub generate-sas-token parancsát egy SAS-jogkivonat lekéréséhez egy IoT Hubon regisztrált eszközhöz. Az alábbi parancs például egy egyórás SAS-jogkivonatot hoz létre. {iothub_name}
Ehhez csak a gazdagép hame első részére van szüksége, példáulMyExampleHub
.
az iot hub generate-sas-token -d {device_id} -n {iothub_name}
Adatok küldése az IoT Hubra
Meghívja az IoT Hub Send Device Event REST API-t, hogy telemetriát küldjön az eszközre.
Használja a következő curl parancsot:
curl -L -i -X POST -H 'Content-Type: application/json' -H 'Content-Encoding: utf-8' -H 'Authorization: [sas_token]' -d '{"temperature": 30}' https://[assigned_iot_hub_name].azure-devices.net/devices/[device_id]/messages/events?api-version=2020-03-13
Ahol:
-X POST
a curl azt jelzi, hogy ez egy HTTP POST parancs. Ehhez az API-híváshoz szükséges.-H 'Content-Type: application/json'
azt jelzi az IoT Hubnak, hogy JSON-tartalmat teszünk közzé, és "alkalmazásnak/jsonnak" kell lennie.-H 'Content-Encoding: utf-8'
jelzi az IoT Hubnak az üzenet törzséhez használt kódolást. Állítsa be az operációs rendszer/ügyfél megfelelő értékét; azonban általábanutf-8
.-H 'Authorization: [sas_token]'
az IoT Hub az SAS-jogkivonat használatával történő hitelesítésre utasítja. Cserélje le[sas_token]
a hozzárendelt IoT Hubhoz létrehozott jogkivonatra.-d '{"temperature": 30}'
, a–d
paraméter a közzétett üzenet "adata" vagy törzse. Ebben a cikkben egyetlen hőmérsékleti adatpontot teszünk közzé. A tartalomtípus alkalmazásként/jsonként lett megadva, ezért ebben a kérésben a törzs JSON. Vegye figyelembe, hogy a curl esetében egyetlen idézőjelbe van csomagolva; ellenkező esetben meg kell szabadulnia a JSON-ban szereplő idézőjelek elől.Az utolsó paraméter a közzéteendő URL-cím. A Send Device Event API esetében az URL-cím a következő.
https://[assigned_iot_hub_name].azure-devices.net/devices/[device_id]/messages/events?api-version=2020-03-13
Cserélje le
[assigned_iot_hub_name]
annak az IoT Hubnak a nevét, amelyhez az eszköz hozzá lett rendelve.Cserélje le
[device_id]
az eszköz regisztrálásakor hozzárendelt eszközazonosítóra. A regisztrációs csoportokon keresztül kiépíteni kívánt eszközök esetében az eszközazonosító lesz a regisztrációs azonosító. Egyéni regisztrációk esetén megadhat egy olyan eszközazonosítót, amely eltér a regisztrációs bejegyzésben szereplő regisztrációs azonosítótól.
Például egy olyan eszköz esetében, amelynek eszközazonosítója my-symkey-device
telemetriai adatpontot küld egy IoT Hubnak:MyExampleHub
curl -L -i -X POST -H 'Content-Type: application/json' -H 'Content-Encoding: utf-8' -H 'Authorization: SharedAccessSignature sr=MyExampleHub.azure-devices.net%2Fdevices%2Fmy-symkey-device&sig=f%2BwW8XOKeJOtiPc9Iwjc4OpExvPM7NlhM9qxN2a1aAM%3D&se=1663119026' -d '{"temperature": 30}' https://MyExampleHub.azure-devices.net/devices/my-symkey-device/messages/events?api-version=2020-03-13
A sikeres hívásokra a következőhöz hasonló válasz fog reagálni:
HTTP/1.1 204 No Content
Content-Length: 0
Vary: Origin
Server: Microsoft-HTTPAPI/2.0
x-ms-request-id: 9e278582-3561-417b-b807-76426195920f
Date: Wed, 14 Sep 2022 00:32:53 GMT
Következő lépések
A szimmetrikus kulcsigazolásról további információt a Szimmetrikus kulcsigazolás című témakörben talál.
Az SAS-jogkivonatokról és azok szerkezetéről további információt a DPS SAS-hez való hozzáférésének szabályozása című témakörben talál.