Tutorial: Memprovisikan perangkat menggunakan grup pendaftaran kunci konten

Tutorial ini menunjukkan cara memprovisikan beberapa perangkat kunci konten yang disimulasikan dengan aman ke satu IoT Hub menggunakan grup pendaftaran.

Azure IoT Hub Device Provisioning Service mendukung dua jenis pendaftaran untuk menyediakan perangkat:

  • Grup pendaftaran: Digunakan untuk mendaftarkan beberapa perangkat terkait. Tutorial ini menunjukkan provisi dengan grup pendaftaran.
  • Pendaftaran individu: Digunakan untuk mendaftarkan perangkat tunggal.

Azure IoT Hub Device Provisioning Service mendukung tiga bentuk autentikasi untuk menyediakan perangkat:

  • Sertifikat X.509
  • Modul platform tepercaya (TPM)
  • Kunci konten - Tutorial ini menunjukkan pengesahan kunci konten

Beberapa perangkat mungkin tidak memiliki sertifikat, TPM, atau fitur keamanan lainnya yang dapat digunakan untuk mengidentifikasi perangkat dengan aman. Untuk perangkat tersebut, Azure IoT Hub Device Provisioning Service (DPS) menyertakan pengesahan kunci konten. Pengesahan kunci konten dapat digunakan untuk mengidentifikasi perangkat berdasarkan informasi unik seperti alamat MAC atau nomor seri.

Dalam tutorial ini, Anda menyelesaikan tujuan berikut:

  • Tentukan ID pendaftaran unik untuk setiap perangkat.
  • Buat grup pendaftaran yang menggunakan pengesahan kunci konten.
  • Menghasilkan kunci perangkat untuk setiap perangkat menggunakan ID pendaftaran unik dan kunci grup pendaftaran bersama.
  • Provisikan perangkat menggunakan kunci perangkat dan kode sampel di SDK perangkat Azure IoT.

Tutorial ini berorientasi pada stasiun kerja berbasis Windows. Namun, Anda juga dapat melakukan prosedur ini di Linux. Untuk contoh Linux, lihat Tutorial: Provisi untuk latensi geografis.

Catatan

Jika sebelumnya Anda telah menyelesaikan Mulai Cepat: Menyediakan perangkat kunci konten yang disimulasikan dan masih menyiapkan sumber daya Azure dan lingkungan pengembangan, Anda dapat melanjutkan ke Membuat grup pendaftaran kunci konten dalam tutorial ini.

Prasyarat

  • Jika Anda menggunakan lingkungan pengembangan Windows, instal Visual Studio 2022 dengan beban kerja 'Pengembangan desktop dengan C++' diaktifkan. Visual Studio 2019, Visual Studio 2017, dan Visual Studio 2015 juga didukung. Untuk Linux atau macOS, lihat bagian yang sesuai di Menyiapkan lingkungan pengembangan dalam dokumentasi SDK.

  • Instal sistem build CMake terbaru. Pastikan Anda mencentang opsi yang menambahkan CMake executable ke jalur Anda.

    Penting

    Pastikan bahwa prasyarat Visual Studio (Visual Studio dan beban kerja 'Pengembangan desktop dengan C++') diinstal di komputer Anda sebelum memulai penginstalan CMake. Setelah prasyarat tersedia, dan unduhan diverifikasi, pasang sistem build CMake. Selain itu, pastikan bahwa versi lama sistem build CMake gagal membuat file solusi yang digunakan dalam artikel ini. Pastikan untuk menggunakan versi CMake versi terbaru.

  • Instal .NET SDK 6.0 atau yang lebih baru di komputer berbasis Windows Anda. Anda bisa menggunakan perintah berikut untuk memeriksa versi yang Anda gunakan.

    dotnet --info
    
  • Instal Python 3.7 atau yang lebih baru di komputer berbasis Windows Anda. Anda dapat memeriksa versi Python Anda dengan menjalankan python --version.
  • Pasang versi terbaru Git. Pastikan Git ditambahkan ke variabel lingkungan yang dapat diakses oleh jendela perintah. Lihat alat klien Git Software Freedom Conservancy untuk versi terbaru alat git yang akan diinstal, yang mencakup Git Bash, aplikasi baris perintah yang dapat Anda gunakan untuk berinteraksi dengan repositori Git lokal.

Mempersiapkan lingkungan pengembangan Anda

Di bagian ini, Anda menyiapkan lingkungan pengembangan untuk membangun Azure IoT Device SDK untuk C. Kode sampel menyediakan perangkat selama urutan boot perangkat.

  1. Di browser web, buka halaman Rilis Azure IoT C SDK.

  2. Salin nama tag untuk rilis terbaru Azure IoT C SDK, misalnya: lts_03_2024.

  3. Buka perintah Windows dan jalankan perintah berikut untuk mengkloning rilis terbaru repositori Azure IoT Device SDK for C GitHub. Ganti <release-tag> dengan tag yang Anda salin di langkah sebelumnya.

    git clone -b <release-tag> https://github.com/Azure/azure-iot-sdk-c.git
    cd azure-iot-sdk-c
    git submodule update --init
    

    Operasi ini mungkin memerlukan waktu beberapa menit untuk selesai.

  4. Setelah operasi selesai, jalankan perintah berikut dari direktori azure-iot-sdk-c:

    mkdir cmake
    cd cmake
    
  5. Sampel kode menggunakan kunci konten untuk memberikan pengesahan. Jalankan perintah berikut untuk membuat versi SDK khusus untuk platform klien pengembangan Anda yang mencakup klien provisi perangkat:

    cmake -Dhsm_type_symm_key:BOOL=ON -Duse_prov_client:BOOL=ON  ..
    

    Tip

    Jika cmake tidak menemukan pengompilasi C++, Anda mungkin mendapatkan kesalahan build saat menjalankan perintah di atas. Jika hal ini terjadi, coba jalankan perintah ini di perintah Visual Studio.

  6. Setelah build berhasil diselesaikan, beberapa baris output terakhir akan terlihat mirip dengan output berikut:

    $ cmake -Dhsm_type_symm_key:BOOL=ON -Duse_prov_client:BOOL=ON  ..
    -- Building for: Visual Studio 16 2019
    -- Selecting Windows SDK version 10.0.19041.0 to target Windows 10.0.22621.
    -- The C compiler identification is MSVC 19.29.30146.0
    -- The CXX compiler identification is MSVC 19.29.30146.0
    
    ...
    
    -- Configuring done
    -- Generating done
    -- Build files have been written to: C:/azure-iot-sdk-c/cmake
    
  1. Buka prompt perintah atau terminal Git Bash.

  2. Kloning repositori Azure IoT SDK for C# GitHub menggunakan perintah berikut:

    git clone https://github.com/Azure/azure-iot-sdk-csharp.git
    
  1. Buka prompt perintah atau terminal Git Bash.

  2. Kloning repositori Azure IoT SDK untuk Node.js GitHub menggunakan perintah berikut:

    git clone https://github.com/Azure/azure-iot-sdk-node.git --recursive
    
  1. Buka prompt perintah atau terminal Git Bash.

  2. Kloning repositori GitHub Azure IoT Device SDK for Python menggunakan perintah berikut:

    git clone -b v2 https://github.com/Azure/azure-iot-sdk-python.git --recursive
    

    Catatan

    Sampel yang digunakan dalam tutorial ini berada di cabang v2 dari repositori azure-iot-sdk-python. V3 dari Python SDK tersedia untuk digunakan dalam versi beta. Untuk informasi tentang memperbarui sampel kode V2 untuk menggunakan rilis V3 Python SDK, lihat Panduan migrasi Azure IoT Device SDK for Python.

  1. Buka prompt perintah atau terminal Git Bash.

  2. Kloning repositori GitHub Azure IoT SDK untuk Java menggunakan perintah berikut:

    git clone https://github.com/Azure/azure-iot-sdk-java.git --recursive
    
  3. Buka direktori azure-iot-sdk-java akar dan buat proyek untuk mengunduh semua paket yang dibutuhkan. Langkah ini dapat memakan waktu beberapa menit untuk diselesaikan.

    cd azure-iot-sdk-java
    mvn install -DskipTests=true
    

Membuat grup pendaftaran kunci konten

  1. Masuk ke portal Microsoft Azure dan navigasikan ke instans Device Provisioning Service.

  2. Pilih Kelola pendaftaran dari bagian Pengaturan menu navigasi.

  3. Pilih Tambahkan grup pendaftaran.

  4. Pada tab Pendaftaran + provisi halaman Tambahkan grup pendaftaran, berikan informasi berikut untuk mengonfigurasi detail grup pendaftaran:

    Bidang Deskripsi
    Pengesahan Pilih Kunci konten sebagai mekanisme Pengesahan.
    Pengaturan kunci konten Centang kotak Buat kunci konten secara otomatis jika Anda ingin menggunakan kunci yang dihasilkan secara acak. Hapus centang pada kotak ini jika Anda ingin menyediakan kunci Anda sendiri.
    Nama grup Berikan nama untuk grup perangkat. Nama grup pendaftaran adalah string yang tidak peka huruf besar/kecil (panjangnya hingga 128 karakter) dari karakter alfanumerik ditambah karakter khusus: '-', , '.''_', ':'. Karakter terakhir harus alfanumerik atau tanda hubung ('-').
    Status provisi Centang kotak Aktifkan pendaftaran ini jika Anda ingin grup pendaftaran ini tersedia untuk menyediakan perangkat. Hapus centang pada kotak ini jika Anda ingin grup dinonaktifkan. Anda dapat mengubah pengaturan ini nanti.
    Kebijakan provisi ulang Pilih kebijakan provisi ulang yang mencerminkan bagaimana Anda ingin DPS menangani perangkat yang meminta provisi ulang. Untuk informasi selengkapnya, lihat Kebijakan provisi ulang

    Screenshot that shows adding an enrollment group for symmetric key attestation.

  5. Pilih Berikutnya: Hub IoT.

  6. Pada tab hub IoT di halaman Tambahkan grup pendaftaran, berikan informasi berikut untuk menentukan hub IoT mana yang dapat disediakan oleh grup pendaftaran untuk:

    Bidang Deskripsi
    Hub IoT target Pilih satu atau beberapa hub IoT tertaut Anda, atau tambahkan tautan baru ke hub IoT. Untuk mempelajari selengkapnya tentang menautkan hub IoT ke instans DPS Anda, lihat Cara menautkan dan mengelola hub IoT.
    Kebijakan alokasi Jika Anda memilih lebih dari satu hub IoT tertaut, pilih bagaimana Anda ingin menetapkan perangkat ke hub yang berbeda. Untuk mempelajari selengkapnya tentang kebijakan alokasi, lihat Cara menggunakan kebijakan alokasi.

    Jika Anda hanya memilih satu hub IoT tertaut, sebaiknya gunakan kebijakan distribusi Tertimbang Merata.

    Screenshot that shows connecting IoT hubs to the new enrollment group.

  7. Pilih Berikutnya: Pengaturan perangkat

  8. Pada tab Pengaturan perangkat di halaman Tambahkan grup pendaftaran, berikan informasi berikut untuk menentukan bagaimana perangkat yang baru disediakan akan dikonfigurasi:

    Bidang Deskripsi
    IoT Edge Periksa Aktifkan IoT Edge pada perangkat yang disediakan jika semua perangkat yang disediakan melalui grup ini akan menjalankan Azure IoT Edge. Hapus centang pada kotak ini jika grup ini hanya untuk perangkat yang tidak mendukung IoT Edge. Baik semua perangkat dalam grup akan diaktifkan IoT Edge atau tidak ada yang bisa.
    Tag perangkat Gunakan kotak teks ini untuk menyediakan tag apa pun yang ingin Anda terapkan ke perangkat kembar perangkat yang disediakan.
    Properti yang diinginkan Gunakan kotak teks ini untuk menyediakan properti yang diinginkan yang ingin Anda terapkan ke perangkat kembar perangkat yang disediakan.

    Untuk informasi selengkapnya, lihat Memahami dan menggunakan perangkat kembar di IoT Hub.

  9. Pilih Berikutnya: Tinjau + buat.

  10. Pada tab Tinjau + buat , verifikasi semua nilai Anda lalu pilih Buat.

Saat Anda membuat grup pendaftaran, DPS menghasilkan kunci primer dan kunci sekunder, lalu menambahkannya ke entri pendaftaran. Grup pendaftaran kunci konten Anda muncul di bawah kolom Nama grup di tab Grup Pendaftaran.

Buka pendaftaran dan salin nilai Kunci Primer. Kunci ini adalah kunci grup Anda.

Pilih ID pendaftaran unik untuk perangkat

ID pendaftaran unik harus ditentukan untuk mengidentifikasi setiap perangkat. Anda dapat menggunakan alamat MAC, nomor seri, atau informasi unik apa pun dari perangkat.

Dalam contoh ini, kami menggunakan kombinasi alamat MAC dan nomor seri yang membentuk string berikut untuk ID pendaftaran.

sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6

Buat ID pendaftaran unik untuk setiap perangkat. ID pendaftaran adalah string yang tidak peka huruf besar/kecil (panjangnya hingga 128 karakter) karakter alfanumerik ditambah karakter khusus berikut: - . _ :. Karakter terakhir harus alfanumerik atau tanda hubung (-).

Turunkan kunci perangkat

Untuk menghasilkan kunci perangkat, gunakan kunci primer grup pendaftaran untuk menghitung hash HMAC-SHA256 dari ID pendaftaran untuk setiap perangkat. Hasilnya kemudian dikonversi menjadi format Base 64 untuk setiap perangkat.

Peringatan

Kode perangkat Anda untuk setiap perangkat hanya boleh menyertakan kunci perangkat turunan untuk perangkat tersebut. Jangan sertakan kunci utama grup Anda dalam kode perangkat Anda. Kunci grup yang disusupi berpotensi membahayakan keamanan semua perangkat yang diautentikasi dengannya.

Ekstensi IoT untuk Azure CLI menyediakan perintah az iot dps enrollment-group compute-device-key untuk menghasilkan kunci perangkat turunan. Perintah ini dapat digunakan dari sistem berbasis Windows dan Linux.

Ganti nilai --key parameter dengan Kunci Primer dari grup pendaftaran Anda.

Ganti nilai --registration-id parameter dengan ID pendaftaran Anda.

az iot dps enrollment-group compute-device-key --key <group_primary_key> --registration-id <device_registration_id>

Contoh hasil:

"Jsm0lyGpjaVYVP2g3FnmnmG9dI/9qU24wNoykUmermc="

Setiap perangkat menggunakan kunci perangkat turunannya dengan ID pendaftaran unik untuk melakukan pengesahan kunci konten dengan grup pendaftaran selama provisi.

Menyiapkan dan menjalankan kode provisi perangkat

Di bagian ini, Anda memperbarui kode sampel perangkat untuk mengirim urutan boot perangkat ke instans Device Provisioning Service Anda. Urutan boot ini menyebabkan perangkat dikenali, diautentikasi, dan ditetapkan ke hub IoT yang ditautkan ke instans Device Provisioning Service.

Kode provisi sampel menyelesaikan tugas-tugas berikut, dalam urutan:

  1. Mengautentikasi perangkat Anda dengan sumber daya Device Provisioning menggunakan tiga parameter berikut:

    • Cakupan ID Device Provisioning Service
    • ID pendaftaran untuk perangkat Anda.
    • Kunci perangkat turunan untuk perangkat Anda.
  2. Menetapkan perangkat ke hub IoT yang sudah ditautkan ke instans Device Provisioning Service Anda.

Untuk memperbarui dan menjalankan sampel provisi dengan informasi perangkat Anda:

  1. Di menu utama Device Provisioning Service Anda, pilih Gambaran Umum.

  2. Salin nilai Cakupan ID.

    Screenshot that shows copying the ID scope from the DPS overview pane.

  3. Di Visual Studio, buka file solusi azure_iot_sdks.sln yang dihasilkan dengan menjalankan CMake sebelumnya. File solusi harus ada di lokasi berikut:

    
    \azure-iot-sdk-c\cmake\azure_iot_sdks.sln
    
    

    Tip

    Jika file tidak dibuat di direktori cmake Anda, pastikan Anda menggunakan versi terbaru sistem build CMake.

  4. Di jendela Penjelajah Solusi Visual Studio, buka folder Provision_Samples. Perluas proyek sampel bernama prov_dev_client_sample. Perluas File Sumber, dan buka prov_dev_client_sample.c.

  5. id_scope Temukan konstanta, dan ganti nilai dengan nilai Cakupan ID yang Anda salin dari portal Azure.

    static const char* id_scope = "0ne00002193";
    
  6. Temukan definisi untuk fungsi main() dalam file yang sama. Pastikan variabel hsm_type diatur ke SECURE_DEVICE_TYPE_SYMMETRIC_KEY seperti yang ditunjukkan di bawah ini.

    SECURE_DEVICE_TYPE hsm_type;
    //hsm_type = SECURE_DEVICE_TYPE_TPM;
    //hsm_type = SECURE_DEVICE_TYPE_X509;
    hsm_type = SECURE_DEVICE_TYPE_SYMMETRIC_KEY;
    
  7. Temukan panggilan ke prov_dev_set_symmetric_key_info() di prov_dev_client_sample.c yang dikomentari.

    // Set the symmetric key if using they auth type
    //prov_dev_set_symmetric_key_info("<symm_registration_id>", "<symmetric_Key>");
    

    Batalkan komentar panggilan fungsi dan ganti nilai tempat penampung (termasuk tanda kurung sudut) dengan ID pendaftaran yang Anda pilih di Pilih ID pendaftaran unik untuk perangkat dan kunci perangkat turunan yang Anda buat di Memperoleh kunci perangkat.

    // Set the symmetric key if using they auth type
    prov_dev_set_symmetric_key_info("sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6", "Jsm0lyGpjaVYVP2g3FnmnmG9dI/9qU24wNoykUmermc=");
    

    Perhatian

    Ketahuilah bahwa langkah ini meninggalkan kunci perangkat turunan yang disertakan sebagai bagian dari gambar untuk setiap perangkat, yang bukan merupakan praktik terbaik keamanan yang direkomendasikan. Ini adalah salah satu alasan mengapa keamanan dan kemudahan penggunaan sering kali dipertukarkan. Anda harus benar-benar meninjau keamanan perangkat berdasarkan kebutuhan Anda sendiri.

  8. Simpan file.

  9. Klik kanan proyek prov_dev_client_sample dan pilih Atur sebagai Proyek Startup.

  10. Pada menu Visual Studio, pilih Debug>Mulai tanpa penelusuran kesalahan untuk menjalankan solusinya. Jika diminta untuk membuat kembali proyek, pilih Ya untuk membuat kembali proyek sebelum dijalankan.

    Output berikut adalah contoh perangkat yang berhasil terhubung ke instans Layanan penyediaan yang akan ditetapkan ke hub IoT:

    Provisioning API Version: 1.9.1
    
    Registering Device
    
    Provisioning Status: PROV_DEVICE_REG_STATUS_CONNECTED
    Provisioning Status: PROV_DEVICE_REG_STATUS_ASSIGNING
    
    Registration Information received from service: contoso-hub-2.azure-devices.net, deviceId: sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6
    Press enter key to exit:
    

Kode provisi sampel menyelesaikan tugas-tugas berikut:

  1. Mengautentikasi perangkat Anda dengan sumber daya Device Provisioning menggunakan tiga parameter berikut:

    • Cakupan ID Device Provisioning Service
    • ID pendaftaran untuk perangkat Anda.
    • Kunci perangkat turunan untuk perangkat Anda.
  2. Menetapkan perangkat ke hub IoT yang sudah ditautkan ke instans Device Provisioning Service Anda.

  3. Mengirim pesan telemetri pengujian ke hub IoT.

Untuk memperbarui dan menjalankan sampel provisi dengan informasi perangkat Anda:

  1. Di menu utama Device Provisioning Service Anda, pilih Gambaran Umum.

  2. Salin nilai Cakupan ID.

    Screenshot that shows copying the ID scope from the DPS overview pane.

  3. Buka prompt perintah dan buka SymmetricKeySample di repositori SDK kloning:

    cd .\azure-iot-sdk-csharp\provisioning\device\samples\how to guides\SymmetricKeySample
    
  4. Di folder SymmetricKeySample,buka Parameter.cs di editor teks. File ini menunjukkan parameter yang dirujuk oleh sampel. Hanya tiga parameter pertama yang diperlukan yang digunakan dalam artikel ini saat menjalankan sampel. Tinjau kode dalam file ini. Tidak diperlukan perubahan.

    Parameter Diperlukan Deskripsi
    --i atau --IdScope Benar Cakupan ID instans DPS
    --r atau --RegistrationId Benar ID pendaftaran untuk perangkat. ID pendaftaran adalah string yang tidak peka huruf besar/kecil (panjangnya hingga 128 karakter) karakter alfanumerik ditambah karakter khusus: '-', '.', '_', ':'. Karakter terakhir harus alfanumerik atau tanda hubung ('-').
    --p atau --PrimaryKey Benar Kunci utama pendaftaran individu atau kunci perangkat turunan dari pendaftaran grup.
    --g atau --GlobalDeviceEndpoint Salah Titik akhir global untuk disambungkan perangkat. Default ke global.azure-devices-provisioning.net
    --t atau --TransportType Salah Transportasi yang digunakan untuk berkomunikasi dengan instans provisi perangkat. Default ke Mqtt. Nilai yang mungkin mencakup Mqtt, Mqtt_WebSocket_Only, Mqtt_Tcp_Only, Amqp, Amqp_WebSocket_Only, Amqp_Tcp_only, dan Http1.
  5. Di folder SymmetricKeySample, buka ProvisioningDeviceClientSample.cs di editor teks. File ini menampilkan cara class SecurityProviderSymmetricKey digunakan bersama dengan class ProvisioningDeviceClient untuk memprovisikan perangkat kunci konten Anda. Tinjau kode dalam file ini. Tidak diperlukan perubahan.

  6. Buat dan jalankan kode sampel menggunakan perintah berikut:

    • Ganti <id-scope> dengan Cakupan ID yang Anda salin dari portal Azure.
    • Ganti <registration-id> dengan ID pendaftaran yang Anda pilih di Pilih ID pendaftaran unik untuk perangkat.
    • Ganti <primarykey> dengan kunci perangkat turunan yang Anda buat.
    dotnet run --i <id-scope> --r <registration-id> --p <primarykey>
    
  7. Anda akan melihat sesuatu yang mirip dengan output berikut. String "TestMessage" dikirim ke hub sebagai pesan pengujian.

    D:\azure-iot-sdk-csharp\provisioning\device\samples\how to guides\SymmetricKeySample>dotnet run --i 0ne00000A0A --r sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6 --p sbDDeEzRuEuGKag+kQKV+T1QGakRtHpsERLP0yPjwR93TrpEgEh/Y07CXstfha6dhIPWvdD1nRxK5T0KGKA+nQ==
    
    Initializing the device provisioning client...
    Initialized for registration Id sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6.
    Registering with the device provisioning service...
    Registration status: Assigned.
    Device sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6 registered to contoso-hub-2.azure-devices.net.
    Creating symmetric key authentication for IoT Hub...
    Testing the provisioned device with IoT Hub...
    Sending a telemetry message...
    Finished.
    

Kode provisi sampel menyelesaikan tugas-tugas berikut, dalam urutan:

  1. Mengautentikasi perangkat Anda dengan sumber daya Device Provisioning menggunakan empat parameter berikut:

    • PROVISIONING_HOST
    • PROVISIONING_IDSCOPE
    • PROVISIONING_REGISTRATION_ID
    • PROVISIONING_SYMMETRIC_KEY
  2. Menetapkan perangkat ke hub IoT yang sudah ditautkan ke instans Device Provisioning Service Anda.

  3. Mengirim pesan telemetri pengujian ke hub IoT.

Untuk memperbarui dan menjalankan sampel provisi dengan informasi perangkat Anda:

  1. Di menu utama Device Provisioning Service Anda, pilih Gambaran Umum.

  2. Salin nilai Cakupan ID.

    Screenshot that shows copying the ID scope from the DPS overview pane.

  3. Buka perintah untuk menjalankan perintah Node.js, dan buka direktori berikut:

    cd azure-iot-sdk-node\provisioning\device\samples
    
  4. Di folder penyediaan/perangkat/sampel, buka register_symkey.js dan tinjau kode.

    Sampel default ke MQTT sebagai protokol transportasi. Jika Anda ingin menggunakan protokol yang berbeda, komentari baris berikut dan batalkan komentar baris untuk protokol yang sesuai.

    var ProvisioningTransport = require('azure-iot-provisioning-device-mqtt').Mqtt;
    

    Perhatikan juga, bahwa kode sampel menetapkan payload kustom:

    provisioningClient.setProvisioningPayload({a: 'b'});
    

    Anda dapat mengomentari kode ini, karena tidak diperlukan untuk tutorial ini. Payload kustom dapat digunakan saat Anda menggunakan webhook alokasi kustom untuk menetapkan perangkat Anda ke IoT Hub. Untuk informasi selengkapnya, lihat Tutorial: Menggunakan kebijakan alokasi kustom.

    Metode provisioningClient.register() ini mengupayakan percobaan pendaftaran perangkat Anda.

  5. Di prompt perintah, jalankan perintah berikut untuk mengatur variabel lingkungan yang digunakan oleh sampel:

    • Perintah pertama mengatur PROVISIONING_HOST variabel lingkungan ke titik akhir perangkat Global. Titik akhir ini sama untuk semua instans DPS.
    • Ganti <id-scope> dengan Cakupan ID yang Anda salin dari portal Azure.
    • Ganti <registration-id> dengan ID pendaftaran yang Anda pilih di Pilih ID pendaftaran unik untuk perangkat.
    • Ganti <defived-device-key> dengan kunci perangkat turunan yang Anda buat di Memperoleh kunci perangkat.
    set PROVISIONING_HOST=global.azure-devices-provisioning.net
    
    set PROVISIONING_IDSCOPE=<id-scope>
    
    set PROVISIONING_REGISTRATION_ID=<registration-id>
    
    set PROVISIONING_SYMMETRIC_KEY=<derived-device-key>
    
  6. Buat dan jalankan kode sampel menggunakan perintah berikut:

     npm install
    
    node register_symkey.js
    
  7. Sekarang, Anda akan melihat sesuatu yang mirip dengan output berikut. String "Halo Dunia" dikirim ke hub sebagai pesan pengujian.

    registration succeeded
    assigned hub=contoso-hub-2.azure-devices.net
    deviceId=sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6
    payload=undefined
    Client connected
    send status: MessageEnqueued
    

Kode provisi sampel menyelesaikan tugas-tugas berikut, dalam urutan:

  1. Mengautentikasi perangkat Anda dengan sumber daya Device Provisioning menggunakan empat parameter berikut:

    • PROVISIONING_HOST
    • PROVISIONING_IDSCOPE
    • PROVISIONING_REGISTRATION_ID
    • PROVISIONING_SYMMETRIC_KEY
  2. Menetapkan perangkat ke hub IoT yang sudah ditautkan ke instans Device Provisioning Service Anda.

  3. Mengirim pesan telemetri pengujian ke hub IoT.

Untuk memperbarui dan menjalankan sampel provisi dengan informasi perangkat Anda:

  1. Di menu utama Device Provisioning Service Anda, pilih Gambaran Umum.

  2. Salin nilai Cakupan ID.

    Screenshot that shows copying the ID scope from the DPS overview pane.

  3. Buka prompt perintah dan buka direktori tempat file sampel, provision_symmetric_key.py, berada.

    cd azure-iot-sdk-python\samples\async-hub-scenarios
    
  4. Di prompt perintah, jalankan perintah berikut untuk mengatur variabel lingkungan yang digunakan oleh sampel:

    • Perintah pertama mengatur PROVISIONING_HOST variabel lingkungan ke titik akhir perangkat Global. Titik akhir ini sama untuk semua instans DPS.
    • Ganti <id-scope> dengan Cakupan ID yang Anda salin dari portal Azure.
    • Ganti <registration-id> dengan ID pendaftaran yang Anda pilih di Pilih ID pendaftaran unik untuk perangkat.
    • Ganti <defived-device-key> dengan kunci perangkat turunan yang Anda buat di Memperoleh kunci perangkat.
    set PROVISIONING_HOST=global.azure-devices-provisioning.net
    
    set PROVISIONING_IDSCOPE=<id-scope>
    
    set PROVISIONING_REGISTRATION_ID=<registration-id>
    
    set PROVISIONING_SYMMETRIC_KEY=<derived-device-key>
    
  5. Instal pustaka azure-iot-device dengan menjalankan perintah berikut ini.

    pip install azure-iot-device
    
  6. Jalankan kode sampel Python di provision_symmetric_key.py.

    python provision_symmetric_key.py
    
  7. Sekarang, Anda akan melihat sesuatu yang mirip dengan output berikut. Beberapa contoh pesan telemetri kecepatan angin juga dikirim ke hub sebagai pengujian.

    D:\azure-iot-sdk-python\samples\async-hub-scenarios>python provision_symmetric_key.py
    The complete registration result is
    sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6
    contoso-hub-2.azure-devices.net
    initialAssignment
    null
    Will send telemetry from the provisioned device
    sending message #1
    sending message #2
    sending message #3
    sending message #4
    sending message #5
    sending message #6
    sending message #7
    sending message #8
    sending message #9
    sending message #10
    done sending message #1
    done sending message #2
    done sending message #3
    done sending message #4
    done sending message #5
    done sending message #6
    done sending message #7
    done sending message #8
    done sending message #9
    done sending message #10
    

Kode provisi sampel menyelesaikan tugas-tugas berikut, dalam urutan:

  1. Mengautentikasi perangkat Anda dengan sumber daya Device Provisioning menggunakan empat parameter berikut:

    • GLOBAL_ENDPOINT
    • SCOPE_ID
    • REGISTRATION_ID
    • SYMMETRIC_KEY
  2. Menetapkan perangkat ke hub IoT yang sudah ditautkan ke instans Device Provisioning Service Anda.

  3. Mengirim pesan telemetri pengujian ke hub IoT.

Untuk memperbarui dan menjalankan sampel provisi dengan informasi perangkat Anda:

  1. Di menu utama Device Provisioning Service Anda, pilih Gambaran Umum.

  2. Salin nilai Cakupan ID.

    Screenshot that shows copying the ID scope from the DPS overview pane.

  3. Buka kode sampel perangkat Java dengan tujuan pengeditan. Jalur lengkap menuju kode sampel perangkat adalah:

    azure-iot-sdk-java/provisioning/provisioning-samples/provisioning-symmetrickey-individual-sample/src/main/java/samples/com/microsoft/azure/sdk/iot/ProvisioningSymmetricKeyIndividualEnrollmentSample.java

  4. Atur nilai variabel berikut untuk pendaftaran DPS dan perangkat Anda:

    • Ganti [Your scope ID here] dengan Cakupan ID yang Anda salin dari portal Azure.
    • Ganti [Your Provisioning Service Global Endpoint here] dengan titik akhir perangkat Global: global.azure-devices-provisioning.net. Titik akhir ini sama untuk semua instans DPS.
    • Ganti [Enter your Symmetric Key here] dengan kunci perangkat turunan yang Anda buat di Memperoleh kunci perangkat.
    • Ganti [Enter your Registration ID here] dengan ID pendaftaran yang Anda pilih di Pilih ID pendaftaran unik untuk perangkat.
    private static final String SCOPE_ID = "[Your scope ID here]";
    private static final String GLOBAL_ENDPOINT = "[Your Provisioning Service Global Endpoint here]";
    private static final String SYMMETRIC_KEY = "[Enter your Symmetric Key here]";
    private static final String REGISTRATION_ID = "[Enter your Registration ID here]";
    

    Perhatian

    Ketahuilah bahwa langkah ini meninggalkan kunci perangkat turunan yang disertakan sebagai bagian dari gambar untuk setiap perangkat, yang bukan merupakan praktik terbaik keamanan yang direkomendasikan. Ini adalah salah satu alasan mengapa keamanan dan kemudahan penggunaan sering kali dipertukarkan. Anda harus benar-benar meninjau keamanan perangkat berdasarkan kebutuhan Anda sendiri.

  5. Buka prompt perintah untuk membuatnya. Buka provisi folder proyek sampel dari repositori Java SDK.

    cd azure-iot-sdk-java\provisioning\provisioning-device-client-samples\provisioning-symmetrickey-individual-sample
    
  6. Susun sampel.

    mvn clean install
    
  7. target Buka folder dan jalankan file yang dibuat.jar. java Dalam perintah , ganti {version} tempat penampung dengan versi dalam .jar nama file di komputer Anda.

    cd target
    java -jar ./provisioning-symmetrickey-individual-sample-{version}-with-deps.jar
    
  8. Sekarang, Anda akan melihat sesuatu yang mirip dengan output berikut.

    Starting...
    Beginning setup.
    WARNING: sun.reflect.Reflection.getCallerClass is not supported. This will impact performance.
    2022-10-07 18:14:48,388 DEBUG (main) [com.microsoft.azure.sdk.iot.provisioning.device.ProvisioningDeviceClient] - Initialized a ProvisioningDeviceClient instance using SDK version 2.0.2
    2022-10-07 18:14:48,390 DEBUG (main) [com.microsoft.azure.sdk.iot.provisioning.device.ProvisioningDeviceClient] - Starting provisioning thread...
    Waiting for Provisioning Service to register
    2022-10-07 18:14:48,392 INFO (global.azure-devices-provisioning.net-002edcf5-CxnPendingConnectionId-azure-iot-sdk-ProvisioningTask) [com.microsoft.azure.sdk.iot.provisioning.device.internal.task.ProvisioningTask] - Opening the connection to device provisioning service...
    2022-10-07 18:14:48,518 INFO (global.azure-devices-provisioning.net-002edcf5-Cxn002edcf5-azure-iot-sdk-ProvisioningTask) [com.microsoft.azure.sdk.iot.provisioning.device.internal.task.ProvisioningTask] - Connection to device provisioning service opened successfully, sending initial device registration message
    2022-10-07 18:14:48,521 INFO (global.azure-devices-provisioning.net-002edcf5-Cxn002edcf5-azure-iot-sdk-RegisterTask) [com.microsoft.azure.sdk.iot.provisioning.device.internal.task.RegisterTask] - Authenticating with device provisioning service using symmetric key
    2022-10-07 18:14:49,252 INFO (global.azure-devices-provisioning.net-002edcf5-Cxn002edcf5-azure-iot-sdk-ProvisioningTask) [com.microsoft.azure.sdk.iot.provisioning.device.internal.task.ProvisioningTask] - Waiting for device provisioning service to provision this device...
    2022-10-07 18:14:49,253 INFO (global.azure-devices-provisioning.net-002edcf5-Cxn002edcf5-azure-iot-sdk-ProvisioningTask) [com.microsoft.azure.sdk.iot.provisioning.device.internal.task.ProvisioningTask] - Current provisioning status: ASSIGNING
    2022-10-07 18:14:52,459 INFO (global.azure-devices-provisioning.net-002edcf5-Cxn002edcf5-azure-iot-sdk-ProvisioningTask) [com.microsoft.azure.sdk.iot.provisioning.device.internal.task.ProvisioningTask] - Device provisioning service assigned the device successfully
    IotHUb Uri : contoso-hub-2.azure-devices.net
    Device ID : sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6
    2022-10-07 18:14:58,424 INFO (main) [com.microsoft.azure.sdk.iot.device.transport.ExponentialBackoffWithJitter] - NOTE: A new instance of ExponentialBackoffWithJitter has been created with the following properties. Retry Count: 2147483647, Min Backoff Interval: 100, Max Backoff Interval: 10000, Max Time Between Retries: 100, Fast Retry Enabled: true
    2022-10-07 18:14:58,436 INFO (main) [com.microsoft.azure.sdk.iot.device.transport.ExponentialBackoffWithJitter] - NOTE: A new instance of ExponentialBackoffWithJitter has been created with the following properties. Retry Count: 2147483647, Min Backoff Interval: 100, Max Backoff Interval: 10000, Max Time Between Retries: 100, Fast Retry Enabled: true
    2022-10-07 18:14:58,440 DEBUG (main) [com.microsoft.azure.sdk.iot.device.DeviceClient] - Initialized a DeviceClient instance using SDK version 2.1.1
    2022-10-07 18:14:58,450 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.mqtt.MqttIotHubConnection] - Opening MQTT connection...
    2022-10-07 18:14:58,471 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.mqtt.Mqtt] - Sending MQTT CONNECT packet...
    2022-10-07 18:14:59,314 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.mqtt.Mqtt] - Sent MQTT CONNECT packet was acknowledged
    2022-10-07 18:14:59,315 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.mqtt.Mqtt] - Sending MQTT SUBSCRIBE packet for topic devices/sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6/messages/devicebound/#
    2022-10-07 18:14:59,378 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.mqtt.Mqtt] - Sent MQTT SUBSCRIBE packet for topic devices/sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6/messages/devicebound/# was acknowledged
    2022-10-07 18:14:59,379 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.mqtt.MqttIotHubConnection] - MQTT connection opened successfully
    2022-10-07 18:14:59,381 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.IotHubTransport] - The connection to the IoT Hub has been established
    2022-10-07 18:14:59,383 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.IotHubTransport] - Updating transport status to new status CONNECTED with reason CONNECTION_OK
    2022-10-07 18:14:59,389 DEBUG (main) [com.microsoft.azure.sdk.iot.device.DeviceIO] - Starting worker threads
    2022-10-07 18:14:59,392 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.IotHubTransport] - Invoking connection status callbacks with new status details
    2022-10-07 18:14:59,395 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.IotHubTransport] - Client connection opened successfully
    2022-10-07 18:14:59,404 INFO (main) [com.microsoft.azure.sdk.iot.device.DeviceClient] - Device client opened successfully
    Sending message from device to IoT Hub...
    2022-10-07 18:14:59,408 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.IotHubTransport] - Message was queued to be sent later ( Message details: Correlation Id [32cf12c4-4db1-4562-9d8c-267c0506636f] Message Id [2e1717be-cfcf-41a7-b1c0-59edeb8ea865] )
    Press any key to exit...
    2022-10-07 18:14:59,409 DEBUG (contoso-hub-2.azure-devices.net-sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6-c32c76d0-Cxn0e70bbf7-8476-441d-8626-c17250585ee6-azure-iot-sdk-IotHubSendTask) [com.microsoft.azure.sdk.iot.device.transport.IotHubTransport] - Sending message ( Message details: Correlation Id [32cf12c4-4db1-4562-9d8c-267c0506636f] Message Id [2e1717be-cfcf-41a7-b1c0-59edeb8ea865] )
    2022-10-07 18:14:59,777 DEBUG (MQTT Call: sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6) [com.microsoft.azure.sdk.iot.device.transport.IotHubTransport] - IotHub message was acknowledged. Checking if there is record of sending this message ( Message details: Correlation Id [32cf12c4-4db1-4562-9d8c-267c0506636f] Message Id [2e1717be-cfcf-41a7-b1c0-59edeb8ea865] )
    2022-10-07 18:14:59,779 DEBUG (contoso-hub-2.azure-devices.net-sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6-c32c76d0-Cxn0e70bbf7-8476-441d-8626-c17250585ee6-azure-iot-sdk-IotHubSendTask) [com.microsoft.azure.sdk.iot.device.transport.IotHubTransport] - Invoking the callback function for sent message, IoT Hub responded to message ( Message details: Correlation Id [32cf12c4-4db1-4562-9d8c-267c0506636f] Message Id [2e1717be-cfcf-41a7-b1c0-59edeb8ea865] ) with status OK
    Message received! Response status: OK
    

Konfirmasi pendaftaran provisi perangkat Anda

Dalam tutorial ini, Anda menggunakan kebijakan alokasi konfigurasi statis untuk menetapkan perangkat yang mendaftar melalui grup pendaftaran ke hub IoT yang sama. Namun, untuk alokasi di mana perangkat mungkin diprovisikan ke salah satu dari beberapa hub IoT, Anda dapat memeriksa catatan pendaftaran grup pendaftaran untuk melihat hub IoT mana perangkat disediakan untuk:

  1. Di portal Azure, buka instans DPS Anda.

  2. Di menu Pengaturan, pilih Kelola pendaftaran.

  3. Pilih Grup pendaftaran.

  4. Pilih grup pendaftaran yang Anda buat untuk tutorial ini.

  5. Pada halaman Detail Grup Pendaftaran, pilih Status pendaftaran.

  6. Temukan ID perangkat untuk kolom Id Perangkat Anda dan catat hub IoT di kolom Hub IoT yang Ditetapkan.

    Anda dapat memilih rekaman perangkat untuk melihat detail selengkapnya seperti kembar awal yang ditetapkan ke perangkat.

Untuk memverifikasi perangkat di hub IoT Anda:

  1. Di portal Azure, buka hub IoT tempat perangkat Anda ditetapkan.

  2. Di menu Manajemen perangkat , pilih Perangkat.

  3. Jika perangkat Anda berhasil disediakan, ID perangkatnya akan muncul dalam daftar, dengan Status diatur sebagai diaktifkan. Jika Anda tidak melihat perangkat Anda, pilih Refresh.

    Device is registered with the IoT hub

Catatan

Jika Anda mengubah status kembar perangkat awal dari nilai default dalam grup pendaftaran, perangkat dapat menarik status kembar yang diinginkan dari hub dan bertindak sesuai. Untuk informasi selengkapnya, lihat Memahami dan menggunakan perangkat kembar di IoT Hub.

Memprovisikan lebih banyak perangkat

Untuk menyediakan lebih banyak perangkat melalui grup pendaftaran, ikuti langkah-langkah di bagian sebelumnya untuk:

  1. Pilih ID pendaftaran unik untuk perangkat.

  2. Mendapatkan kunci perangkat. Seperti yang Anda lakukan sebelumnya, gunakan kunci utama untuk grup pendaftaran sebagai kunci grup.

  3. Jalankan kode provisi perangkat. Ganti artefak yang diperlukan dengan kunci perangkat turunan baru dan ID pendaftaran Anda.

Membersihkan sumber daya

Jika Anda berencana untuk terus mengerjakan dan menjelajahi sampel klien perangkat, jangan bersihkan sumber daya yang dibuat dalam tutorial ini. Jika Anda tidak berencana untuk melanjutkan, gunakan langkah-langkah berikut untuk menghapus semua sumber daya yang dibuat dalam tutorial ini.

Menghapus grup pendaftaran Anda

Menghapus grup pendaftaran tidak menghapus catatan pendaftaran yang terkait dengannya. Catatan yatim piatu ini dihitung terhadap kuota pendaftaran untuk instans DPS. Untuk alasan ini, ini adalah praktik terbaik untuk menghapus semua catatan pendaftaran yang terkait dengan grup pendaftaran sebelum Anda menghapus grup pendaftaran itu sendiri.

  1. Di portal Azure, buka instans DPS Anda.

  2. Di menu Pengaturan, pilih Kelola pendaftaran.

  3. Pilih tab Grup pendaftaran.

  4. Pilih nama grup pendaftaran yang Anda gunakan untuk tutorial ini untuk membuka halaman detailnya.

  5. Pada halaman Detail pendaftaran, pilih Status pendaftaran. Lalu pilih kotak centang di samping header kolom Id Perangkat untuk memilih semua rekaman pendaftaran untuk grup pendaftaran. Pilih Hapus di bagian atas halaman untuk menghapus rekaman pendaftaran.

  6. Kembali ke halaman Kelola pendaftaran .

  7. Pilih kotak centang di samping nama grup pendaftaran yang Anda gunakan untuk tutorial ini.

  8. Di bagian atas halaman, pilih Hapus.

Menghapus pendaftaran perangkat dari IoT Hub

  1. Di portal Azure, buka hub IoT tempat perangkat Anda ditetapkan.

  2. Pada menu navigasi pilih Perangkat dari bagian Manajemen perangkat.

  3. Pilih kotak centang di samping ID perangkat perangkat yang Anda daftarkan dalam tutorial ini.

  4. Di bagian atas halaman, pilih Hapus.

Langkah berikutnya

Dalam tutorial ini, Anda memprovisikan beberapa perangkat ke satu hub IoT menggunakan grup pendaftaran. Selanjutnya, pelajari cara memprovisikan perangkat IoT di beberapa hub.