Secara terprogram membuat pendaftaran individu Device Provisioning Service untuk pengesahan TPM

Artikel ini memperlihatkan kepada Anda cara membuat pendaftaran individual secara terprogram untuk perangkat TPM di Azure IoT Hub Device Provisioning Service dengan menggunakan SDK layanan Azure IoT Hub DPS dan aplikasi sampel. Setelah membuat pendaftaran individual, Anda dapat secara opsional mendaftarkan perangkat TPM yang disimulasikan ke layanan provisi melalui entri pendaftaran ini.

Meskipun langkah-langkah ini berfungsi pada komputer Windows maupun Linux, artikel ini menggunakan komputer pengembangan Windows.

Prasyarat

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

    dotnet --info
    
  • (Opsional) Jika Anda ingin mendaftarkan perangkat yang disimulasikan di akhir artikel ini, ikuti prosedur di Membuat dan menyediakan perangkat TPM yang disimulasikan hingga langkah di mana Anda mendapatkan kunci dukungan untuk perangkat. Simpan kunci Dukungan, saat Anda menggunakannya nanti di artikel ini.

    Catatan

    Jangan ikuti langkah-langkah untuk membuat pendaftaran individu dengan menggunakan portal Azure.

  • Instal Node.js v4.0+.

  • (Opsional) Jika Anda ingin mendaftarkan perangkat yang disimulasikan di akhir artikel ini, ikuti prosedur di Membuat dan menyediakan perangkat TPM yang disimulasikan hingga langkah di mana Anda mendapatkan kunci dukungan dan ID pendaftaran untuk perangkat. Simpan kunci Dukungan dan ID Pendaftaran, saat Anda menggunakannya nanti di artikel ini.

    Catatan

    Jangan ikuti langkah-langkah untuk membuat pendaftaran individu dengan menggunakan portal Azure.

  • Instal Kit Pengembangan Java 8. Artikel ini menginstal Java Service SDK nanti di artikel. Ini berfungsi pada Windows dan Linux. Artikel ini menggunakan Windows.

  • Instal Maven 3.

  • Instal Git dan pastikan bahwa jalur ditambahkan ke variabel PATHlingkungan .

  • (Opsional) Jika Anda ingin mendaftarkan perangkat yang disimulasikan di akhir artikel ini, ikuti prosedur di Membuat dan menyediakan perangkat TPM yang disimulasikan hingga langkah di mana Anda mendapatkan kunci dukungan untuk perangkat. Perhatikan kunci Dukungan dan ID Pendaftaran, saat Anda menggunakannya nanti di artikel ini.

    Catatan

    Jangan ikuti langkah-langkah untuk membuat pendaftaran individu dengan menggunakan portal Azure.

Mendapatkan kunci dukungan TPM (Opsional)

Anda dapat mengikuti langkah-langkah dalam artikel ini untuk membuat sampel pendaftaran individual. Dalam hal ini, Anda akan dapat melihat entri pendaftaran di DPS, tetapi Anda tidak akan dapat menggunakannya untuk menyediakan perangkat.

Anda juga dapat memilih untuk mengikuti langkah-langkah dalam artikel ini untuk membuat pendaftaran individu dan mendaftarkan perangkat TPM yang disimulasikan. Jika Anda ingin mendaftarkan perangkat yang disimulasikan di akhir artikel ini, ikuti prosedur di Membuat dan menyediakan perangkat TPM yang disimulasikan hingga langkah di mana Anda mendapatkan kunci dukungan untuk perangkat. Simpan kunci Dukungan, saat Anda menggunakannya nanti di artikel ini.

Catatan

Jangan ikuti langkah-langkah untuk membuat pendaftaran individu dengan menggunakan portal Azure.

Anda juga dapat memilih untuk mengikuti langkah-langkah dalam artikel ini untuk membuat pendaftaran individu dan mendaftarkan perangkat TPM yang disimulasikan. Jika Anda ingin mendaftarkan perangkat yang disimulasikan di akhir artikel ini, ikuti prosedur di Membuat dan menyediakan perangkat TPM yang disimulasikan hingga langkah di mana Anda mendapatkan kunci dukungan dan ID pendaftaran untuk perangkat. Simpan kunci Dukungan dan ID Pendaftaran, saat Anda menggunakannya nanti di artikel ini.

Catatan

Jangan ikuti langkah-langkah untuk membuat pendaftaran individu dengan menggunakan portal Azure.

Anda juga dapat memilih untuk mengikuti langkah-langkah dalam artikel ini untuk membuat pendaftaran individu dan mendaftarkan perangkat TPM yang disimulasikan. Jika Anda ingin mendaftarkan perangkat yang disimulasikan di akhir artikel ini, ikuti prosedur di Membuat dan menyediakan perangkat TPM yang disimulasikan hingga langkah di mana Anda mendapatkan kunci dukungan untuk perangkat. Perhatikan kunci Dukungan dan ID Pendaftaran, saat Anda menggunakannya nanti di artikel ini.

Catatan

Jangan ikuti langkah-langkah untuk membuat pendaftaran individu dengan menggunakan portal Azure.

Mendapatkan string koneksi untuk layanan penyediaan Anda

Untuk sampel dalam artikel ini, Anda harus menyalin string koneksi untuk layanan provisi Anda.

  1. Masuk ke portal Azure.

  2. Di menu sebelah kiri atau di halaman portal, pilih Semua sumber daya.

  3. Pilih Device Provisioning Service Anda.

  4. Di menu Pengaturan, pilih Kebijakan akses bersama.

  5. Pilih kebijakan akses yang ingin Anda gunakan.

  6. Di panel Kebijakan Akses, salin dan simpan string koneksi kunci primer.

    Get provisioning service connection string from the portal.

Membuat sampel pendaftaran individu

Bagian ini menunjukkan cara membuat aplikasi konsol .NET Core yang menambahkan pendaftaran individu untuk perangkat TPM ke layanan provisi Anda.

  1. Buka perintah Windows dan navigasikan ke folder tempat Anda ingin membuat aplikasi.

  2. Untuk membuat proyek konsol, jalankan perintah berikut:

    dotnet new console --framework net6.0 --use-program-main 
    
  3. Untuk menambahkan referensi ke SDK layanan DPS, jalankan perintah berikut:

    dotnet add package Microsoft.Azure.Devices.Provisioning.Service 
    

    Langkah ini mengunduh, menginstal, dan menambahkan referensi ke paket NuGet klien layanan Azure IoT DPS dan dependensinya. Paket ini mencakup biner untuk SDK layanan .NET.

  4. Buka file Program.cs di editor.

  5. Ganti pernyataan namespace layanan di bagian atas file dengan yang berikut ini:

    namespace CreateIndividualEnrollment;
    
  6. Tambahkan pernyataan berikut using di bagian atas file di atasnamespace pernyataan:

    using System.Threading.Tasks;
    using Microsoft.Azure.Devices.Provisioning.Service;
    
  7. Tambahkan bidang berikut ke kelas Program, dan buat perubahan yang tercantum.

    private static string ProvisioningConnectionString = "{ProvisioningServiceConnectionString}";
    private const string RegistrationId = "sample-registrationid-csharp";
    private const string TpmEndorsementKey =
        "AToAAQALAAMAsgAgg3GXZ0SEs/gakMyNRqXXJP1S124GUgtk8qHaGzMUaaoABgCAAEMAEAgAAAAAAAEAxsj2gUS" +
        "cTk1UjuioeTlfGYZrrimExB+bScH75adUMRIi2UOMxG1kw4y+9RW/IVoMl4e620VxZad0ARX2gUqVjYO7KPVt3d" +
        "yKhZS3dkcvfBisBhP1XH9B33VqHG9SHnbnQXdBUaCgKAfxome8UmBKfe+naTsE5fkvjb/do3/dD6l4sGBwFCnKR" +
        "dln4XpM03zLpoHFao8zOwt8l/uP3qUIxmCYv9A7m69Ms+5/pCkTu/rK4mRDsfhZ0QLfbzVI6zQFOKF/rwsfBtFe" +
        "WlWtcuJMKlXdD8TXWElTzgh7JS4qhFzreL0c1mI0GCj+Aws0usZh7dLIVPnlgZcBhgy1SSDQMQ==";
    
    // Optional parameters
    private const string OptionalDeviceId = "myCSharpDevice";
    private const ProvisioningStatus OptionalProvisioningStatus = ProvisioningStatus.Enabled;
    
    • Ganti nilai tempat penampung ProvisioningServiceConnectionString dengan string koneksi layanan provisi yang disalin di bagian sebelumnya.

    • Jika Anda menggunakan artikel ini bersama dengan mulai cepat Membuat dan memprovisikan perangkat TPM yang disimulasikan untuk menyediakan perangkat yang disimulasikan, ganti kunci dukungan dengan nilai yang Anda catat dalam mulai cepat tersebut. Anda dapat mengganti ID perangkat dan ID pendaftaran dengan nilai yang disarankan dalam mulai cepat tersebut, menggunakan nilai Anda sendiri, atau menggunakan nilai default dalam sampel ini.

  8. Tambahkan metode berikut ke kelas Program. Kode ini membuat entri pendaftaran individu dan kemudian memanggil CreateOrUpdateIndividualEnrollmentAsync metode pada ProvisioningServiceClient untuk menambahkan pendaftaran individu ke layanan provisi.

    public static async Task RunSample()
    {
        Console.WriteLine("Starting sample...");
    
        using (ProvisioningServiceClient provisioningServiceClient =
                ProvisioningServiceClient.CreateFromConnectionString(ProvisioningConnectionString))
        {
            #region Create a new individualEnrollment config
            Console.WriteLine("\nCreating a new individualEnrollment object...");
            Attestation attestation = new TpmAttestation(TpmEndorsementKey);
            IndividualEnrollment individualEnrollment =
                    new IndividualEnrollment(
                            RegistrationId,
                            attestation);
    
            // The following parameters are optional. Remove them if you don't need them.
            individualEnrollment.DeviceId = OptionalDeviceId;
            individualEnrollment.ProvisioningStatus = OptionalProvisioningStatus;
            #endregion
    
            #region Create the individualEnrollment
            Console.WriteLine("\nAdding the individualEnrollment to the provisioning service...");
            IndividualEnrollment individualEnrollmentResult =
                await provisioningServiceClient.CreateOrUpdateIndividualEnrollmentAsync(individualEnrollment).ConfigureAwait(false);
            Console.WriteLine("\nIndividualEnrollment created with success.");
            Console.WriteLine(individualEnrollmentResult);
            #endregion
    
        }
    }
    
  9. Terakhir, ganti metode Main dengan baris berikut:

    static async Task Main(string[] args)
    {
        await RunSample();
        Console.WriteLine("\nHit <Enter> to exit ...");
        Console.ReadLine();
    }
    
  10. Simpan perubahan Anda.

  1. Dari jendela perintah di folder aktif Anda, jalankan:

    npm install azure-iot-provisioning-service
    

    Langkah ini mengunduh, menginstal, dan menambahkan referensi ke paket klien layanan Azure IoT DPS dan dependensinya. Paket ini mencakup biner untuk SDK layanan Node.js.

  2. Menggunakan editor teks, buat file create_enrollment_group.js di folder aktif Anda. Tambahkan kode berikut ke file:

    'use strict';
    
    var provisioningServiceClient = require('azure-iot-provisioning-service').ProvisioningServiceClient;
    
    var serviceClient = provisioningServiceClient.fromConnectionString(process.argv[2]);
    var endorsementKey = process.argv[3];
    
    var enrollment = {
      registrationId: 'first',
      attestation: {
        type: 'tpm',
        tpm: {
          endorsementKey: endorsementKey
        }
      }
    };
    
    serviceClient.createOrUpdateIndividualEnrollment(enrollment, function(err, enrollmentResponse) {
      if (err) {
        console.log('error creating the individual enrollment: ' + err);
      } else {
        console.log("enrollment record returned: " + JSON.stringify(enrollmentResponse, null, 2));
      }
    });
    
  3. Simpan file.

  1. Buka prompt perintah Windows.

  2. Kloning repositori Microsoft Azure IoT SDK for Java GitHub:

    git clone https://github.com/Azure/azure-iot-sdk-java.git --recursive
    
  3. Buka folder sampel:

    cd azure-iot-sdk-java\provisioning\provisioning-service-client-samples\service-enrollment-sample
    
  4. Buka file \src\main\java\samples\com\microsoft\azure\sdk\iot\ServiceEnrollmentSample.java di editor.

  5. Ganti [Provisioning Connection String] dengan string koneksi yang Anda salin di Mendapatkan string koneksi untuk layanan provisi Anda.

    private static final String PROVISIONING_CONNECTION_STRING = "[Provisioning Connection String]";
    
  6. Tambahkan detail perangkat TPM. [RegistrationId] Ganti dan [TPM Endorsement Key] dalam pernyataan berikut dengan kunci dukungan dan ID pendaftaran Anda.

    private static final String REGISTRATION_ID = "[RegistrationId]";
    private static final String TPM_ENDORSEMENT_KEY = "[TPM Endorsement Key]";
    
    • Jika Anda menggunakan artikel ini bersama dengan mulai cepat Membuat dan memprovisikan perangkat TPM yang disimulasikan untuk menyediakan perangkat yang disimulasikan, gunakan ID Pendaftaran dan nilai kunci Dukungan yang Anda catat dari mulai cepat tersebut.

    • Jika Anda menggunakan artikel ini untuk hanya membuat sampel pendaftaran individual dan tidak berniat menggunakannya untuk mendaftarkan perangkat, Anda dapat menggunakan nilai berikut untuk kunci dukungan:

      private static final String TPM_ENDORSEMENT_KEY = "AToAAQALAAMAsgAgg3GXZ0SEs/gakMyNRqXXJP1S124GUgtk8qHaGzMUaaoABgCAAEMAEAgAAAAAAAEAxsj2gUScTk1UjuioeTlfGYZrrimExB+bScH75adUMRIi2UOMxG1kw4y+9RW/IVoMl4e620VxZad0ARX2gUqVjYO7KPVt3dyKhZS3dkcvfBisBhP1XH9B33VqHG9SHnbnQXdBUaCgKAfxome8UmBKfe+naTsE5fkvjb/do3/dD6l4sGBwFCnKRdln4XpM03zLpoHFao8zOwt8l/uP3qUIxmCYv9A7m69Ms+5/pCkTu/rK4mRDsfhZ0QLfbzVI6zQFOKF/rwsfBtFeWlWtcuJMKlXdD8TXWElTzgh7JS4qhFzreL0c1mI0GCj+Aws0usZh7dLIVPnefZcBhgy1SSDQMQ==";
      

      Masukkan nilai Anda sendiri untuk ID pendaftaran, misalnya, "myJavaDevice".

  7. Untuk pendaftaran individual, Anda dapat memilih untuk mengatur ID perangkat yang ditetapkan DPS ke perangkat saat menyediakannya ke IoT Hub. Jika Anda tidak menetapkan ID perangkat, DPS menggunakan ID pendaftaran sebagai ID perangkat. Secara default, sampel ini menetapkan "myJavaDevice" sebagai ID perangkat. Jika Anda ingin mengubah ID perangkat, ubah pernyataan berikut:

        private static final String DEVICE_ID = "myJavaDevice";
    

    Jika Anda tidak ingin menetapkan ID perangkat tertentu, komentari pernyataan berikut:

    individualEnrollment.setDeviceId(DEVICE_ID);
    
  8. Sampel ini memungkinkan Anda mengatur hub IoT di pendaftaran individual untuk menyediakan perangkat. Hub IoT ini harus salah satu yang sebelumnya telah ditautkan ke layanan provisi. Untuk artikel ini, kami mengizinkan DPS memilih dari hub yang ditautkan sesuai dengan kebijakan alokasi default, distribusi yang ditimbang secara merata. Komentari pernyataan berikut dalam file:

    individualEnrollment.setIotHubHostName(IOTHUB_HOST_NAME);
    
  9. Sampel membuat, memperbarui, mengkueri, dan menghapus pendaftaran perangkat TPM individual. Untuk memverifikasi pendaftaran yang berhasil di portal, komentari sementara baris kode berikut di akhir file:

    // *********************************** Delete info of individualEnrollment ************************************
    System.out.println("\nDelete the individualEnrollment...");
    provisioningServiceClient.deleteIndividualEnrollment(REGISTRATION_ID);
    
  10. Simpan perubahan Anda.

Menjalankan sampel pendaftaran individu

  1. Jalankan sampel:

    dotnet run
    
  2. Jika pembuatan berhasil, jendela perintah akan menampilkan properti pendaftaran baru.

Untuk menjalankan sampel, Anda memerlukan string koneksi untuk layanan provisi yang Anda salin di bagian sebelumnya, dan kunci dukungan untuk perangkat. Jika Anda telah mengikuti mulai cepat Membuat dan memprovisikan perangkat yang disimulasikan untuk membuat perangkat TPM yang disimulasikan, gunakan kunci dukungan yang dibuat untuk perangkat tersebut. Jika tidak, untuk membuat sampel pendaftaran individu, Anda dapat menggunakan kunci dukungan berikut yang disediakan dengan SDK Layanan Node.js:

AToAAQALAAMAsgAgg3GXZ0SEs/gakMyNRqXXJP1S124GUgtk8qHaGzMUaaoABgCAAEMAEAgAAAAAAAEAxsj2gUScTk1UjuioeTlfGYZrrimExB+bScH75adUMRIi2UOMxG1kw4y+9RW/IVoMl4e620VxZad0ARX2gUqVjYO7KPVt3dyKhZS3dkcvfBisBhP1XH9B33VqHG9SHnbnQXdBUaCgKAfxome8UmBKfe+naTsE5fkvjb/do3/dD6l4sGBwFCnKRdln4XpM03zLpoHFao8zOwt8l/uP3qUIxmCYv9A7m69Ms+5/pCkTu/rK4mRDsfhZ0QLfbzVI6zQFOKF/rwsfBtFeWlWtcuJMKlXdD8TXWElTzgh7JS4qhFzreL0c1mI0GCj+Aws0usZh7dLIVPnlgZcBhgy1SSDQMQ==
  1. Untuk membuat pendaftaran individu untuk perangkat TPM Anda, jalankan perintah berikut (sertakan tanda kutip di sekitar argumen perintah):

    node create_individual_enrollment.js "<the connection string for your provisioning service>" "<endorsement key>"
    
  2. Jika pembuatan berhasil, jendela perintah akan menampilkan properti pendaftaran baru.

  1. Dari folder azure-iot-sdk-java\provisioning\provisioning-service-client-samples\service-enrollment-sample di prompt perintah Anda, jalankan perintah berikut untuk membuat sampel:

    mvn install -DskipTests
    

    Perintah ini mengunduh paket Maven klien layanan Azure IoT DPS ke komputer Anda dan membangun sampel. Paket ini mencakup biner untuk SDK layanan Java.

  2. Beralih ke folder target dan jalankan sampel. Build dalam langkah sebelumnya menghasilkan file .jar di folder target dengan format file berikut: service-enrollment-sample-{version}-with-deps.jar; misalnya: service-enrollment-sample-1.8.1-with-deps.jar. Anda mungkin perlu mengganti versi dalam perintah berikut.

    cd target
    java -jar ./service-enrollment-sample-1.8.1-with-deps.jar
    
  3. Jika pembuatan berhasil, jendela perintah akan menampilkan properti pendaftaran baru.

Untuk memverifikasi bahwa pendaftaran individu telah dibuat:

  1. Di portal Azure, navigasikan ke instans Device Provisioning Service Anda.

  2. Di menu Pengaturan, pilih Kelola pendaftaran.

  3. Pilih tab Pendaftaran individual. Anda akan melihat entri pendaftaran baru yang sesuai dengan ID pendaftaran yang Anda gunakan dalam sampel.

Screenshot that shows verifying enrollment for a C# individual device in the portal.

Screenshot that shows verifying enrollment for a Node.js individual device in the portal.

Screenshot that shows verifying enrollment for a Java individual device in the portal.

Mendaftarkan perangkat yang disimulasikan (Opsional)

Jika Anda telah mengikuti langkah-langkah dalam mulai cepat Membuat dan memprovisikan perangkat TPM yang disimulasikan untuk memprovisikan perangkat yang disimulasikan, lanjutkan mulai cepat di Mendaftarkan perangkat.

Jika Anda telah mengikuti langkah-langkah dalam mulai cepat Membuat dan memprovisikan perangkat TPM yang disimulasikan untuk memprovisikan perangkat yang disimulasikan, lanjutkan mulai cepat di Mendaftarkan perangkat.

Jika Anda telah mengikuti langkah-langkah dalam mulai cepat Membuat dan memprovisikan perangkat TPM yang disimulasikan untuk memprovisikan perangkat yang disimulasikan, lanjutkan mulai cepat di Mendaftarkan perangkat.

Membersihkan sumber daya

Jika Anda berencana untuk menjelajahi tutorial DPS, jangan bersihkan sumber daya yang dibuat dalam artikel ini. Jika tidak, gunakan langkah-langkah berikut untuk menghapus semua sumber daya yang dibuat oleh artikel ini.

  1. Di portal Azure, navigasikan ke instans Device Provisioning Service Anda.

  2. Di menu Pengaturan, pilih Kelola pendaftaran.

  3. Pilih tab Pendaftaran individual.

  4. Pilih kotak centang di samping ID pendaftaran entri pendaftaran yang Anda buat di artikel ini.

  5. Di bagian atas halaman, pilih Hapus.

  1. Jika Anda mengikuti langkah-langkah dalam Membuat dan memprovisikan perangkat TPM yang disimulasikan untuk membuat perangkat TPM yang disimulasikan, lakukan langkah-langkah berikut:

    1. Di portal Azure, arahkan ke IoT Hub tempat perangkat Anda disediakan.

    2. Di menu sebelah kiri di bawah Manajemen perangkat, pilih Perangkat.

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

    4. Di bagian atas panel, pilih Hapus.

  1. Jika Anda mengikuti langkah-langkah dalam Membuat dan memprovisikan perangkat TPM yang disimulasikan untuk membuat perangkat TPM yang disimulasikan, lakukan langkah-langkah berikut:

    1. Tutup jendela simulator TPM dan jendela output sampel untuk perangkat yang disimulasikan.

    2. Di portal Azure, arahkan ke IoT Hub tempat perangkat Anda disediakan.

    3. Di menu sebelah kiri di bawah Manajemen perangkat, pilih Perangkat.

    4. Pilih kotak centang di samping ID perangkat perangkat yang Anda daftarkan di artikel ini.

    5. Di bagian atas panel, pilih Hapus.

  1. Jika Anda mengikuti langkah-langkah dalam Membuat dan memprovisikan perangkat TPM yang disimulasikan untuk membuat perangkat TPM yang disimulasikan, lakukan langkah-langkah berikut:

    1. Tutup jendela simulator TPM dan jendela output sampel untuk perangkat yang disimulasikan.

    2. Di portal Azure, arahkan ke IoT Hub tempat perangkat Anda disediakan.

    3. Di menu sebelah kiri di bawah Manajemen perangkat, pilih Perangkat.

    4. Pilih kotak centang di samping ID perangkat perangkat yang Anda daftarkan di artikel ini.

    5. Di bagian atas panel, pilih Hapus.

Langkah berikutnya

Dalam artikel ini, Anda telah secara terprogram membuat entri pendaftaran individual untuk perangkat TPM. Secara opsional, Anda telah membuat perangkat yang disimulasikan TPM di komputer Anda dan telah menyediakannya ke hub IoT Anda menggunakan Azure IoT Hub Device Provisioning Service. Untuk menjelajahi lebih lanjut, lihat tautan berikut: