Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makalede, simetrik anahtarlar kullanarak, Azure IoT DPS cihaz SDK'sı olmadan, HTTPS üzerinden bir cihazı nasıl hazırlayacağınızı öğreneceksiniz. Çoğu dil, HTTP istekleri göndermek için kitaplıklar sağlar, ancak bu makalede https üzerinden gönderip almak için belirli bir dile odaklanmak yerine cURL komut satırı aracını kullanacaksınız.
Linux veya Windows makinesinde bu makaledeki adımları izleyebilirsiniz. Linux için Windows Alt Sistemi (WSL) üzerinde veya Linux makinesinde çalıştırıyorsanız, yerel sisteminizdeki tüm komutları bash istemine girebilirsiniz. Windows'da çalıştırıyorsanız yerel sisteminizdeki tüm komutları GitBash istemine girin.
Kullanmayı seçtiğiniz kayıt girişinin türüne bağlı olarak bu makalede farklı yollar vardır. Önkoşulları yükledikten sonra devam etmeden önce Genel Bakış'ı okuduğunuzdan emin olun.
Önkoşullar
Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.
Azure portalıyla IoT Hub Cihazı Sağlama Hizmeti'ni ayarlama makalesindeki adımları tamamlayın.
Makinenizde Python 3.7 veya sonraki bir sürümün yüklü olduğundan emin olun. komutunu çalıştırarak
python --versionPython sürümünüzü de kontrol edebilirsiniz.Windows'da çalıştırıyorsanız Git'in en son sürümünü yükleyin. Git'in komut penceresi tarafından erişilebilen ortam değişkenlerine eklendiğinden emin olun. Yazılım Özgürlüğü Koruması'nın Git istemci araçlarına bakın, bu araçların en son sürümünü yüklemek için. Bu, yerel Git deponuzla etkileşim kurmak için kullanabileceğiniz komut satırı uygulaması Git Bash'i içerir. Windows'da, yerel sisteminizdeki tüm komutları gitBash istemine girersiniz.
Azure CLI. Bu makalede Azure CLI komutlarını çalıştırmak için iki seçeneğiniz vardır:
- Tarayıcınızda CLI komutlarını çalıştıran etkileşimli bir kabuk olan Azure Cloud Shell'i kullanın. Hiçbir şey yüklemeniz gerekmeyen bu seçenek önerilir. Cloud Shell'i ilk kez kullanıyorsanız Azure portalında oturum açın. Cloud Shell'i başlatmak ve Bash ortamını seçmek için Cloud Shell hızlı başlangıcındaki adımları izleyin.
- İsteğe bağlı olarak yerel makinenizde Azure CLI'yı çalıştırın. Azure CLI zaten yüklüyse, CLI'yi ve uzantıları geçerli sürüme yükseltmek için komutunu çalıştırın
az upgrade. Azure CLI'yı yüklemek için bkz. Azure CLI'yi yükleme.
Linux veya WSL ortamında çalıştırıyorsanız komutları yerel olarak çalıştırmak için bir Bash istemi açın. Windows ortamında çalıştırıyorsanız GitBash istemini açın.
Genel bakış
Bu makale için, DPS aracılığıyla sağlama yapmak amacıyla ya bireysel kaydı ya da bir kayıt grubunu kullanabilirsiniz.
Bireysel kayıt için Bireysel kaydı kullanın tamamlayın.
Kayıt grubu için Kayıt grubunu kullanma'yı tamamlayın.
Bireysel kayıt veya kayıt grubu girdisini oluşturduktan sonra sas belirteci oluşturmaya ve cihazınızı DPS'ye kaydetmeye devam edin.
Bireysel kayıt kullanma
Bu makalede kullanmak üzere yeni bir bireysel kayıt oluşturmak istiyorsanız az iot dps enrollment create komutunu kullanarak simetrik anahtar kanıtlama için tek bir kayıt oluşturabilirsiniz.
Aşağıdaki komut, DPS örneğinin varsayılan ayırma ilkesine sahip bir kayıt girdisi oluşturur ve DPS'nin cihazınız için birincil ve ikincil anahtarları atamasına olanak tanır:
az iot dps enrollment create -g {resource_group_name} --dps-name {dps_name} --enrollment-id {enrollment_id} --attestation-type symmetrickey
Kaynak grubunuzun ve DPS örneğinizin adını değiştirin.
Kayıt kimliği, cihazınızın kayıt kimliğidir. Kayıt kimliği, alfasayısal karakterlerin yanı sıra özel karakterler içeren büyük/küçük harfe duyarlı olmayan bir dizedir (en fazla 128 karakter uzunluğundadır):
'-','.','_',':'. Son karakter alfasayısal veya tire ('-') olmalıdır. Komutta kullandığınız kayıt kimliğinin bu biçime uydığından emin olun.
Atanan simetrik anahtarlar yanıttaki kanıtlama özelliğinde döndürülür:
{
"allocationPolicy": null,
"attestation": {
"symmetricKey": {
"primaryKey": "G3vn0IZH9oK3d4wsxFpWBtd2KUrtjI+39dZVRf26To8w9OX0LaFV9yZ93ELXY7voqHEUsNhnb9bt717UP87KxA==",
"secondaryKey": "4lNxgD3lUAOEOied5/xOocyiUSCAgS+4b9OvXLDi8ug46/CJzIn/3rN6Ys6gW8SMDDxMQDaMRnIoSd1HJ5qn/g=="
},
"tpm": null,
"type": "symmetricKey",
"x509": null
},
...
}
Bireysel kayıt girdiniz için birincil anahtarı ve kayıt kimliğini (kayıt kimliği) not edin, bunları bu makalenin devamında kullanırsınız.
Bu makale için mevcut bir bireysel kaydı kullanmak istiyorsanız, birincil anahtarı az iot dps enrollment show komutuyla alabilirsiniz.
az iot dps enrollment show -g {resource_group_name} --dps-name {dps_name} --enrollment-id {enrollment_id} --show-keys true
Kayıt grubu kullanma
Bu makalede kullanmak üzere yeni bir kayıt grubu oluşturmak istiyorsanız az iot dps enrollment-group create komutunu kullanarak simetrik anahtar kanıtlama için bir kayıt grubu oluşturabilirsiniz.
Aşağıdaki komut, DPS örneğinin varsayılan ayırma ilkesine sahip bir kayıt grubu girdisi oluşturur ve DPS'nin kayıt grubu için birincil ve ikincil anahtarları atamasına olanak tanır:
az iot dps enrollment-group create -g {resource_group_name} --dps-name {dps_name} --enrollment-id {enrollment_id}
Kaynak grubunuzun ve DPS örneğinizin adını kullanın.
Kayıt kimliği, alfasayısal karakterlerin yanı sıra özel karakterler içeren büyük/küçük harfe duyarlı olmayan bir dizedir (en fazla 128 karakter uzunluğundadır):
'-','.','_',':'. Son karakter alfanümerik veya kısa çizgi ('-') olmalıdır. Kayıt grubu için kullanmayı seçtiğiniz herhangi bir ad olabilir.
Atanan simetrik anahtarlar yanıttaki kanıtlama özelliğinde döndürülür:
{
"allocationPolicy": null,
"attestation": {
"symmetricKey": {
"primaryKey": "G3vn0IZH9oK3d4wsxFpWBtd2KUrtjI+39dZVRf26To8w9OX0LaFV9yZ93ELXY7voqHEUsNhnb9bt717UP87KxA==",
"secondaryKey": "4lNxgD3lUAOEOied5/xOocyiUSCAgS+4b9OvXLDi8ug46/CJzIn/3rN6Ys6gW8SMDDxMQDaMRnIoSd1HJ5qn/g=="
},
"tpm": null,
"type": "symmetricKey",
"x509": null
},
...
}
Birincil anahtarı not edin.
Bu makale için mevcut bir bireysel kayıt kullanmak istiyorsanız, az iot dps enrollment-group show komutunu kullanarak birincil anahtarı alabilirsiniz.
az iot dps enrollment-group show -g {resource_group_name} --dps-name {dps_name} --enrollment-id {enrollment_id} --show-keys true
Cihaz anahtarı türet
Grup kayıtlarında simetrik anahtar kanıtlamasını kullanırken, kayıt grubu anahtarlarını doğrudan kullanmazsınız. Bunun yerine, kayıt grubu anahtarından her cihaz için benzersiz bir anahtar türetebilirsiniz. Daha fazla bilgi için bkz Simetrik Anahtarlarla Grup Kayıtları.
Bu bölümde, cihaz için benzersiz kayıt kimliğinin HMAC-SHA256 değerini hesaplamak için kayıt grubu birincil anahtarından bir cihaz anahtarı oluşturacaksınız. Sonuç daha sonra Base64 biçimine dönüştürülür.
openssl kullanarak benzersiz anahtarınızı oluşturun. Aşağıdaki Bash kabuk betiğini kullanırsınız.
{primary-key}değerini, daha önce kopyaladığınız kayıt grubunun Birincil Anahtarı ile değiştirin ve{contoso-simdevice}değerini, cihaz için kullanmak istediğiniz kayıt kimliğiyle değiştirin. Kayıt kimliği, alfasayısal karakterlerin yanı sıra özel karakterler içeren büyük/küçük harfe duyarlı olmayan bir dizedir (en fazla 128 karakter uzunluğundadır):'-','.','_',':'. Son karakter alfasayısal veya tire ('-') olmalıdır.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 | base64Kod çıktısı aşağıdaki anahtara benzer bir değer verir:
p3w2DQr9WqEGBLUSlFi1jPQ7UWQL4siAGy75HFTFbf8=
Türetilmiş cihaz anahtarını ve bunu oluşturmak için kullandığınız kayıt kimliğini not edin, bunları sonraki bölümde kullanacaksınız.
Cihaz anahtarı türetmek için Azure CLI veya PowerShell'i de kullanabilirsiniz. Daha fazla bilgi edinmek için bkz . Cihaz anahtarı türet.
SAS belirteci oluşturma
Simetrik anahtar kanıtlama kullandığınızda, cihazlar Paylaşılan Erişim İmzası (SAS) belirteci kullanarak DPS ile kimlik doğrulaması yapar. Bireysel kayıt ile sağlanan cihazlar için belirteç, kayıt girişinde ayarlanan birincil veya ikincil anahtar kullanılarak imzalanır. Kayıt grubu üzerinden cihaz sağlama için, belirteç, kayıt grubu girişinde belirtilen birincil veya ikincil anahtar kullanılarak türetilen cihaz anahtarıyla imzalanır. Jeton, son kullanma süresi ve hedef bir kaynak URI'si belirtir.
Sas belirteci oluşturmak için aşağıdaki Python betiği kullanılabilir:
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))
Nerede:
[resource_uri], bu belirteçle erişmeye çalıştığınız kaynağın URI'sidir. DPS için, biçimindedir[dps_id_scope]/registrations/[dps_registration_id]; burada[dps_id_scope]DPS örneğinizin kimlik kapsamıdır ve[dps_registration_id]cihazınız için kullandığınız kayıt kimliğidir.Azure portalında örneğinizin Genel Bakış bölmesinden DPS örneğinizin ID kapsamını alabilir veya "az iot dps show" Azure CLI komutunu kullanabilirsiniz, (yer tutucuları kaynak grubunuzun ve DPS örneğinizin adıyla değiştirin):
az iot dps show -g {resource_group_name} --name {dps_name}[device_key], cihazınızla ilişkilendirilmiş cihaz anahtarıdır. Bu anahtar, bir kayıtta sizin için belirtilen veya otomatik olarak oluşturulan anahtar ya da grup kaydı için türetilmiş bir anahtardır.Tek bir kayıt kullanıyorsanız, Bireysel kayıt kullanma bölümünde kaydettiğiniz birincil anahtarı kullanın.
Kayıt grubu kullanıyorsanız Kayıt grubu kullanma bölümünde oluşturduğunuz türetilmiş cihaz anahtarını kullanın.
[expiry_in_seconds], bu SAS belirtecinin saniye cinsinden geçerlilik süresidir.[policy], cihaz anahtarının ilişkilendirildiği ilkedir. DPS cihaz kaydı için ilke sabit olarak 'kayıt' olarak kodlanır.
30 günlük geçerlilik süresine sahip adlı my-symkey-device bir cihaz için örnek giriş kümesi şöyle görünebilir.
uri = '0ne00111111/registrations/my-symkey-device'
key = '18RQk/hOPJR9EbsJlk2j8WA6vWaj/yi+oaYg7zmxfQNdOyMSu+SJ8O7TSlZhDJCYmn4rzEiVKIzNiVAWjLxrGA=='
expiry = 2592000
policy='registration'
Cihazınızın ve DPS örneğinizin betiğini değiştirin ve Python dosyası olarak kaydedin; örneğin, generate_token.py. Betiği çalıştırın, örneğin, python generate_token.py. Aşağıdaki örneğe benzer bir SAS belirteci vermelidir:
0ne00111111%2Fregistrations%2Fmy-symkey-device
1663952627
SharedAccessSignature sr=0ne00111111%2Fregistrations%2Fmy-symkey-device&sig=eNwg52xQdFTNf7bgPAlAJBCIcONivq%2Fck1lf3wtxI4A%3D&se=1663952627&skn=registration
ile SharedAccessSignaturebaşlayan satırın tamamını kopyalayın ve kaydedin. Bu satır SAS belirtecidir. Aşağıdaki bölümlerde buna ihtiyacınız vardır.
DPS ve bunların yapısıyla SAS belirteçlerini kullanma hakkında daha fazla bilgi edinmek için bkz. Paylaşılan erişim imzaları ve güvenlik belirteçleriyle Azure IoT Hub Cihazı Sağlama Hizmeti'ne (DPS) erişimi denetleme.
Cihazınızı kaydedin
Cihazınızı DPS aracılığıyla sağlamak için Register Device REST API'sini çağırırsınız.
Aşağıdaki curl komutunu kullanın:
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
Nerede:
-Lcurl'e HTTP yeniden yönlendirmelerini izlemesini söyler.–icurl'e çıkışa protokol üst bilgilerini eklemesini söyler. Bu üst bilgiler kesinlikle gerekli değildir, ancak yararlı olabilir.-X PUTcurl'e bu komutun bir HTTP PUT komutu olduğunu bildirir. Bu API çağrısı için gereklidir.-H 'Content-Type: application/json'DPS'ye JSON içeriği gönderiyoruz ve 'application/json' olması gerektiğini bildirir.-H 'Content-Encoding: utf-8'DPS'ye ileti gövdesi için kullanmakta olduğumuz kodlamayı bildirir. İşletim sisteminiz/istemciniz için uygun değere ayarlayın; ancak genel olarakutf-8şeklindedir.-H 'Authorization: [sas_token]', DPS'ye SAS belirtecinizi kullanarak kimlik doğrulamasını söyler. [sas_token] değerini SAS belirteci oluşturma bölümünde oluşturduğunuz belirteçle değiştirin.-d '{"registrationId": "[registration_id]"}'–dparametresi, göndermekte olduğumuz iletinin 'verileri' veya gövdesidir. '{"registrationId":"[registration_id"}' biçiminde JSON olmalıdır. Curl için tek tırnak içine alınır; aksi takdirde, JSON'daki çift tırnak işaretinden kurtulmanız gerekir.Son olarak, son parametre gönderilecek URL'dir. "normal" (şirket içi değil) DPS için genel DPS uç noktası global.azure-devices-provisioning.net kullanılır:
https://global.azure-devices-provisioning.net/[dps_id_scope]/registrations/[registration_id]/register?api-version=2019-03-31.[dps_scope_id]ve[registration_id]ile uygun değerlerle değiştirmeniz gerekiyor.
Örneğin:
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
Başarılı bir çağrı aşağıdaki örneğe benzer bir yanıt sağlar:
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"}
Yanıt bir işlem kimliği ve bir durum içerir. Bu durumda, durum olarak assigningayarlanır. DPS kaydı, potansiyel olarak uzun süren bir işlem olduğundan eşzamansız olarak gerçekleştirilir. Normalde, cihazınızın ne zaman atandığını veya bir hata oluşup oluşmadığını belirlemek için İşlem Durumu Arama REST API'sini kullanarak durumu yoklarsınız.
DPS için geçerli durum değerleri şunlardır:
assigned: durum çağrısından döndürülen değer, cihazın hangi IoT Hub'a atandığını gösterir.assigning: işlem hala çalışıyor.disabled: Kayıt kaydı DPS'de devre dışı bırakılmıştır, bu nedenle cihaz atanamaz.failed: atama başarısız oldu.errorCodeveerrorMessage, başarısız olanı belirtmek için yanıt içinde birregistrationStatekayıtta döndürülür.unassigned
İşlem Durumu Arama API'sini çağırmak için aşağıdaki curl komutunu kullanın:
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
Cihaz Kaydetme isteğinde kullandığınız kimlik kapsamının, kayıt kimliğinin ve SAS belirtecinin aynısını kullanırsınız. Cihazı Kaydet yanıtında döndürülen işlem kimliğini kullanın.
Örneğin:
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
Aşağıdaki çıkışta, başarıyla atanan bir cihazın yanıtı gösterilmektedir. özelliğinin status olduğuna assigned ve özelliğin registrationState.assignedHub cihazın sağlandığı IoT hub'ına ayarlandığına dikkat edin.
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="
}
}
Telemetri iletisi gönderme
Telemetri iletisi gönderebilmeniz için önce cihazın atandığı IoT hub'ı için bir SAS belirteci oluşturmanız gerekir. BU belirteci, DPS örneğiniz için SAS belirtecini imzalamak için kullandığınız aynı birincil anahtarı veya türetilmiş cihaz anahtarını kullanarak imzalarsınız.
IoT hub'ınız için SAS belirteci oluşturma
SAS belirtecini oluşturmak için, DPS örneğiniz için belirteci oluşturmak üzere aşağıdaki değişikliklerle aynı kodu çalıştırabilirsiniz:
uri = '[resource_uri]'
key = '[device_key]'
expiry = [expiry_in_seconds]
policy= None
Nerede
[resource_uri], bu belirteçle erişmeye çalıştığınız kaynağın URI'sidir. IoT hub'ına ileti gönderen bir cihaz için biçimindedir[iot-hub-host-name]/devices/[device-id].[iot-hub-host-name]için, önceki bölümdeassignedHubözelliğinde döndürülen IoT Hub konak adını kullanın.[device-id]için, bir önceki bölümdedeviceIdözelliği ile döndürülen cihaz kimliğini kullanın.
[device_key], cihazınızla ilişkilendirilmiş cihaz anahtarıdır. Bu anahtar, bir kayıtta sizin için belirtilen veya otomatik olarak oluşturulan anahtar ya da grup kaydı için türetilmiş bir anahtardır. (Daha önce DPS için belirteç oluşturmak için kullandığınız anahtarla aynıdır.)Tek bir kayıt kullanıyorsanız, Bireysel kayıt kullanma bölümünde kaydettiğiniz birincil anahtarı kullanın.
Kayıt grubu kullanıyorsanız Kayıt grubu kullanma bölümünde oluşturduğunuz türetilmiş cihaz anahtarını kullanın.
[expiry_in_seconds], bu SAS belirtecinin saniye cinsinden geçerlilik süresidir.policy=NoneIoT hub'ına telemetri gönderen bir cihaz için ilke gerekmez, bu nedenle bu parametre olarakNoneayarlanır.
Bir my-symkey-device adlı cihazın, MyExampleHub adlı bir IoT Hub'a bir saatlik belirteç geçerlilik süresi ile gönderdiği örnek giriş kümesi şöyle görünebilir:
uri = 'MyExampleHub.azure-devices.net/devices/my-symkey-device'
key = '18RQk/hOPJR9EbsJlk2j8WA6vWaj/yi+oaYg7zmxfQNdOyMSu+SJ8O7TSlZhDJCYmn4rzEiVKIzNiVAWjLxrGA=='
expiry = 3600
policy= None
Aşağıdaki çıkışta bu girişler için örnek bir SAS belirteci gösterilmektedir:
SharedAccessSignature sr=MyExampleHub.azure-devices.net%2Fdevices%2Fmy-symkey-device&sig=f%2BwW8XOKeJOtiPc9Iwjc4OpExvPM7NlhM9qxN2a1aAM%3D&se=1663119026
Diğer programlama dillerindeki örnek kodlar da dahil olmak üzere IoT Hub için SAS belirteçleri oluşturma hakkında daha fazla bilgi edinmek için bkz. Paylaşılan erişim imzalarını kullanarak IoT Hub'a erişimi denetleme.
Dikkat
Kolaylık olması için Azure CLI az iot hub generate-sas-token komutunu kullanarak IoT hub'ına kayıtlı bir cihaz için SAS belirteci alabilirsiniz. Örneğin, aşağıdaki komut bir saat süresine sahip bir SAS belirteci oluşturur.
{iothub_name}için, ana bilgisayar adının yalnızca ilk bölümüne ihtiyacınız vardır; örneğin, MyExampleHub.
az iot hub generate-sas-token -d {device_id} -n {iothub_name}
IoT hub'ınıza veri gönderme
Cihaza telemetri göndermek için IoT Hub Cihaz Gönderme Olayı REST API'sini çağırırsınız.
Aşağıdaki curl komutunu kullanın:
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
Nerede:
-X POSTcurl'e bu komutun bir HTTP POST komutu olduğunu bildirir. Bu API çağrısı için gereklidir.-H 'Content-Type: application/json'IoT Hub'a JSON içeriği gönderdiğimizi ve bunun 'application/json' olarak tanımlanması gerektiğini belirtiyoruz.-H 'Content-Encoding: utf-8'IoT Hub'a ileti gövdesi için kullanmakta olduğumuz kodlamayı bildirir. İşletim sisteminiz/istemciniz için uygun değere ayarlayın; ancak genel olarakutf-8şeklindedir.-H 'Authorization: [sas_token]'IoT Hub'a SAS belirtecinizi kullanarak kimlik doğrulamasını bildirir.[sas_token]ile atanan IoT hub için oluşturulan belirteci değiştirin.-d '{"temperature": 30}'–dparametresi, göndermekte olduğumuz iletinin 'verileri' veya gövdesidir. Bu makale için tek bir sıcaklık veri noktası gönderiyoruz. İçerik türü application/json olarak belirtildiğinden, bu istek için gövde JSON olur. Curl için tek tırnak içine alınır; aksi takdirde, JSON'daki çift tırnak işaretinden kurtulmanız gerekir.Son parametre, gönderinin gönderiliyor olduğu URL'dir. Cihaz Olay Gönderme API'si için URL şöyledir:
https://[assigned_iot_hub_name].azure-devices.net/devices/[device_id]/messages/events?api-version=2020-03-13.[assigned_iot_hub_name]değerini cihazınızın atandığı IoT hub'ının adıyla değiştirin.değerini, cihazınızı kaydettiğinizde atanan cihaz kimliğiyle değiştirin
[device_id]. Kayıt grupları aracılığıyla sağlanan cihazlar için cihaz kimliği kayıt kimliğidir. Bireysel kayıtlar için, isteğe bağlı olarak kayıt girişindeki kayıt kimliğinden farklı bir cihaz kimliği belirtebilirsiniz.
Örneğin, cihaz kimliği my-symkey-device olan bir cihazın MyExampleHub adlı IoT hub'ına telemetri veri noktası göndermesi:
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
Başarılı bir çağrı aşağıdaki örneğe benzer bir yanıta sahiptir:
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
Sonraki Adımlar
Simetrik anahtar kanıtlama hakkında daha fazla bilgi edinmek için bkz . Simetrik anahtar kanıtlama.
SAS belirteçleri ve bunların yapısı hakkında daha fazla bilgi edinmek için bkz. Paylaşılan erişim imzaları ve güvenlik belirteçleriyle Azure IoT Hub Cihazı Sağlama Hizmeti'ne (DPS) erişimi denetleme.