Sdílet prostřednictvím


Programové vytvoření jednotlivé registrace služby Device Provisioning pro ověření identity TPM

V tomto článku se dozvíte, jak prostřednictvím kódu programu vytvořit individuální registraci pro zařízení TPM ve službě Azure IoT Hub Device Provisioning pomocí sady SDK služby Azure IoT Hub DPS a ukázkové aplikace. Po vytvoření jednotlivé registrace můžete volitelně zaregistrovat simulované zařízení TPM do služby zřizování prostřednictvím této položky registrace.

I když tyto kroky fungují na počítačích s Windows i Linuxem, tento článek používá vývojový počítač s Windows.

Požadavky

  • Na počítač s Windows nainstalujte sadu .NET 6.0 SDK nebo novější nebo novější . Ke kontrole verze můžete použít následující příkaz.

    dotnet --info
    
  • (Volitelné) Pokud chcete na konci tohoto článku zaregistrovat simulované zařízení, postupujte podle pokynů v části Vytvoření a zřízení simulovaného zařízení TPM až do kroku, ve kterém získáte ověřovací klíč pro dané zařízení. Uložte ověřovací klíč, jak ho použijete později v tomto článku.

    Nepoužívejte postup vytvoření jednotlivé registrace pomocí webu Azure Portal.

  • Nainstalujte Node.js verze 4.0 nebo novější.

  • (Volitelné) Pokud chcete na konci tohoto článku zaregistrovat simulované zařízení, postupujte podle pokynů v části Vytvoření a zřízení simulovaného zařízení TPM až do kroku, ve kterém získáte ověřovací klíč a ID registrace zařízení. Uložte ověřovací klíč a ID registrace, jak je použijete později v tomto článku.

    Nepoužívejte postup vytvoření jednotlivé registrace pomocí webu Azure Portal.

  • Nainstalujte sadu Java SE Development Kit 8. Tento článek nainstaluje sadu Java Service SDK dále v tomto článku. Funguje v systémech Windows i Linux. Tento článek používá Systém Windows.

  • Nainstalujte Maven 3.

  • Nainstalujte Git a ujistěte se, že je cesta přidaná do proměnné PATHprostředí .

  • (Volitelné) Pokud chcete na konci tohoto článku zaregistrovat simulované zařízení, postupujte podle pokynů v části Vytvoření a zřízení simulovaného zařízení TPM až do kroku, ve kterém získáte ověřovací klíč pro dané zařízení. Poznamenejte si ověřovací klíč a ID registrace, jak je použijete dále v tomto článku.

    Nepoužívejte postup vytvoření jednotlivé registrace pomocí webu Azure Portal.

Získání připojovacího řetězce pro službu zřizování

Pro ukázku v tomto článku použijete připojovací řetězec pro vaši službu zřizování.

  1. Přihlaste se k portálu Azure.

  2. V nabídce vlevo nebo na stránce portálu vyberte Všechny prostředky.

  3. Vyberte službu Device Provisioning.

  4. V nabídce Nastavení vyberte Zásady sdíleného přístupu.

  5. Vyberte zásadu přístupu, kterou chcete použít.

  6. Na panelu Zásady přístupu zkopírujte a uložte primární klíč připojovací řetězec.

    Získejte připojovací řetězec služby zřizování z portálu.

Vytvoření ukázky jednotlivé registrace

V této části se dozvíte, jak vytvořit konzolovou aplikaci .NET Core, která do zřizovací služby přidá jednotlivou registraci zařízení TPM.

  1. Otevřete příkazový řádek windows a přejděte do složky, do které chcete vytvořit aplikaci.

  2. Pokud chcete vytvořit projekt konzoly, spusťte následující příkaz:

    dotnet new console --framework net6.0 --use-program-main 
    
  3. Pokud chcete přidat odkaz na sadu SDK služby DPS, spusťte následující příkaz:

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

    Tento krok stáhne, nainstaluje a přidá odkaz na balíček NuGet klienta služby Azure IoT DPS a jeho závislosti. Tento balíček obsahuje binární soubory pro sadu SDK služby .NET.

  4. Otevřete soubor Program.cs v editoru.

  5. Nahraďte příkaz oboru názvů v horní části souboru následujícím kódem:

    namespace CreateIndividualEnrollment;
    
  6. Na začátek souboru nad namespace příkaz přidejte následující using příkazy:

    using System.Threading.Tasks;
    using Microsoft.Azure.Devices.Provisioning.Service;
    
  7. Přidejte do Program třídy následující pole a proveďte uvedené změny.

    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;
    
    • ProvisioningServiceConnectionString Nahraďte zástupnou hodnotu připojovací řetězec služby zřizování, kterou jste zkopírovali v předchozí části.

    • Pokud tento článek používáte společně s rychlým startem Vytvoření a zřízení simulovaného zařízení TPM pro zřízení simulovaného zařízení, nahraďte ověřovací klíč hodnotou, kterou jste si poznamenali v tomto rychlém startu. ID zařízení a ID registrace můžete nahradit hodnotami navrhovanými v tomto rychlém startu, použít vlastní hodnoty nebo použít výchozí hodnoty v této ukázce.

  8. Do třídy přidejte následující metodu Program . Tento kód vytvoří jednotlivou položku registrace a potom zavolá CreateOrUpdateIndividualEnrollmentAsync metodu ProvisioningServiceClient pro přidání jednotlivé registrace do služby zřizování.

    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. Nakonec nahraďte metodu Main následujícími řádky:

    static async Task Main(string[] args)
    {
        await RunSample();
        Console.WriteLine("\nHit <Enter> to exit ...");
        Console.ReadLine();
    }
    
  10. Uložte provedené změny.

Tip

Pro zjednodušení tato ukázka používá ověřování SAS pro připojení k rozhraní API služby DPS. Bezpečnějším přístupem je použití přihlašovacích údajů tokenu Azure. Příklad této metody ověřování najdete v ukázce create_tpm_enrollment_with_token_credentials.js v sadě Node.js SDK.

  1. Z příkazového okna ve vaší pracovní složce spusťte:

    npm install azure-iot-provisioning-service
    

    Tento krok stáhne, nainstaluje a přidá odkaz na balíček klienta služby Azure IoT DPS a jeho závislosti. Tento balíček obsahuje binární soubory pro sadu SDK služby Node.js.

  2. Pomocí textového editoru ve své pracovní složce vytvořte soubor create_individual_enrollment.js. Do souboru přidejte následující kód:

    '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. Uložte soubor.

  1. Otevřete příkazový řádek Windows.

  2. Naklonujte sady SDK Microsoft Azure IoT pro úložiště GitHub v Javě:

    git clone https://github.com/Azure/azure-iot-sdk-java.git --recursive
    
  3. Přejděte do ukázkové složky:

    cd azure-iot-sdk-java\provisioning\provisioning-service-client-samples\service-enrollment-sample
    
  4. Otevřete soubor \src\main\java\samples\com\microsoft\azure\sdk\iot\ServiceEnrollmentSample.java v editoru.

  5. Nahraďte [Provisioning Connection String] připojovací řetězec, které jste zkopírovali v části Získat připojovací řetězec pro vaši službu zřizování.

    private static final String PROVISIONING_CONNECTION_STRING = "[Provisioning Connection String]";
    
  6. Přidejte podrobnosti o zařízení TPM. [RegistrationId] Nahraďte a [TPM Endorsement Key] v následujících příkazech ověřovacím klíčem a ID registrace.

    private static final String REGISTRATION_ID = "[RegistrationId]";
    private static final String TPM_ENDORSEMENT_KEY = "[TPM Endorsement Key]";
    
    • Pokud tento článek používáte společně s rychlým startem Vytvoření a zřízení simulovaného zařízení TPM pro zřízení simulovaného zařízení, použijte hodnoty ID registrace a ověřovacího klíče , které jste si poznamenali v tomto rychlém startu.

    • Pokud tento článek používáte k vytvoření ukázkové jednotlivé registrace a nemáte v úmyslu ho použít k registraci zařízení, můžete pro ověřovací klíč použít následující hodnotu:

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

      Zadejte vlastní hodnotu pro ID registrace.

  7. U jednotlivých registrací se můžete rozhodnout nastavit ID zařízení, které DPS přiřadí zařízení, když ho zřídí do IoT Hubu. Pokud nepřiřazujete ID zařízení, DPS jako ID zařízení použije ID registrace. Ve výchozím nastavení tato ukázka přiřadí id zařízení myJavaDevice. Pokud chcete změnit ID zařízení, upravte následující příkaz:

        private static final String DEVICE_ID = "myJavaDevice";
    

    Pokud nechcete přiřadit konkrétní ID zařízení, zakomentujte následující příkaz:

    individualEnrollment.setDeviceId(DEVICE_ID);
    
  8. Ukázka umožňuje nastavit centrum IoT v individuální registraci pro zřízení zařízení. Toto centrum IoT musí být takové, které bylo dříve propojeno se službou zřizování. Pro účely tohoto článku necháme SLUŽBU DPS vybrat z propojených center podle výchozích zásad přidělování, rovnoměrně vážené distribuce. Zakomentujte v souboru následující příkaz:

    individualEnrollment.setIotHubHostName(IOTHUB_HOST_NAME);
    
  9. Ukázka vytvoří, aktualizuje, dotazuje a odstraní jednotlivé registrace zařízení TPM. Pokud chcete ověřit úspěšnou registraci na portálu, dočasně okomentujte následující řádky kódu na konci souboru:

    // *********************************** Delete info of individualEnrollment ************************************
    System.out.println("\nDelete the individualEnrollment...");
    provisioningServiceClient.deleteIndividualEnrollment(REGISTRATION_ID);
    
  10. Uložte provedené změny.

Spuštění ukázky jednotlivé registrace

  1. Spusťte ukázku:

    dotnet run
    
  2. Po úspěšném vytvoření se v příkazovém okně zobrazí vlastnosti nové registrace.

Ke spuštění ukázky potřebujete připojovací řetězec pro službu zřizování, kterou jste zkopírovali v předchozí části, a ověřovací klíč pro zařízení. Pokud jste postupovali podle rychlého startu k vytvoření a zřízení simulovaného zařízení TPM, použijte ověřovací klíč vytvořený pro toto zařízení. V opačném případě můžete k vytvoření ukázkové jednotlivé registrace použít následující ověřovací klíč, který je součástí sady SDK služby Node.js:

AToAAQALAAMAsgAgg3GXZ0SEs/gakMyNRqXXJP1S124GUgtk8qHaGzMUaaoABgCAAEMAEAgAAAAAAAEAxsj2gUScTk1UjuioeTlfGYZrrimExB+bScH75adUMRIi2UOMxG1kw4y+9RW/IVoMl4e620VxZad0ARX2gUqVjYO7KPVt3dyKhZS3dkcvfBisBhP1XH9B33VqHG9SHnbnQXdBUaCgKAfxome8UmBKfe+naTsE5fkvjb/do3/dD6l4sGBwFCnKRdln4XpM03zLpoHFao8zOwt8l/uP3qUIxmCYv9A7m69Ms+5/pCkTu/rK4mRDsfhZ0QLfbzVI6zQFOKF/rwsfBtFeWlWtcuJMKlXdD8TXWElTzgh7JS4qhFzreL0c1mI0GCj+Aws0usZh7dLIVPnlgZcBhgy1SSDQMQ==
  1. Pokud chcete vytvořit jednotlivou registraci pro vaše zařízení TPM, spusťte následující příkaz (včetně uvozovek okolo argumentů příkazu):

    node create_individual_enrollment.js "<the connection string for your provisioning service>" "<endorsement key>"
    
  2. Po úspěšném vytvoření se v příkazovém okně zobrazí vlastnosti nové registrace.

  1. Ve složce azure-iot-sdk-java\provisioning\provisioning-service-client-samples\service-enrollment-sample na příkazovém řádku spusťte následující příkaz, který ukázku sestaví:

    mvn install -DskipTests
    

    Tento příkaz stáhne balíček Maven klienta služby Azure IoT DPS do počítače a sestaví ukázku. Tento balíček obsahuje binární soubory sady SDK služby Java.

  2. Přepněte do cílové složky a spusťte ukázku. Sestavení v předchozím kroku vypíše .jar soubor v cílové složce s následujícím formátem souboru: service-enrollment-sample-{version}-with-deps.jarnapříklad : service-enrollment-sample-1.8.1-with-deps.jar. Možná budete muset nahradit verzi v následujícím příkazu.

    cd target
    java -jar ./service-enrollment-sample-1.8.1-with-deps.jar
    
  3. Po úspěšném vytvoření se v příkazovém okně zobrazí vlastnosti nové registrace.

Ověření vytvoření jednotlivé registrace:

  1. Na webu Azure Portal přejděte k vaší instanci služby Device Provisioning.

  2. V nabídce Nastavení vyberte Spravovat registrace.

  3. Vyberte kartu Jednotlivé registrace. Měla by se zobrazit nová položka registrace odpovídající ID registrace, které jste použili v ukázce.

    Snímek obrazovky znázorňující ověření registrace pro jednotlivá zařízení na portálu

Registrace simulovaného zařízení (volitelné)

Vyčištění prostředků

Pokud se chystáte prozkoumat kurzy DPS, nevyčisťujte prostředky vytvořené v tomto článku. V opačném případě pomocí následujícího postupu odstraňte všechny prostředky vytvořené tímto článkem.

  1. Na webu Azure Portal přejděte k vaší instanci služby Device Provisioning.

  2. V nabídce Nastavení vyberte Spravovat registrace.

  3. Vyberte kartu Jednotlivé registrace.

  4. Zaškrtněte políčko vedle ID registrace položky registrace, kterou jste vytvořili v tomto článku.

  5. V horní části stránky vyberte Odstranit.

  1. Pokud jste postupovali podle kroků v části Vytvoření a zřízení simulovaného zařízení TPM pro vytvoření simulovaného zařízení TPM, proveďte následující kroky:

    1. Na webu Azure Portal přejděte do služby IoT Hub, ve které se zřídilo vaše zařízení.

    2. V nabídce vlevo v části Správa zařízení vyberte Zařízení.

    3. Zaškrtněte políčko vedle ID zařízení zařízení, které jste zaregistrovali v tomto článku.

    4. V horní části podokna vyberte Odstranit.

  1. Pokud jste postupovali podle kroků v části Vytvoření a zřízení simulovaného zařízení TPM pro vytvoření simulovaného zařízení TPM, proveďte následující kroky:

    1. Zavřete okno simulátoru TPM a okno výstupu ukázky pro simulované zařízení.

    2. Na webu Azure Portal přejděte do služby IoT Hub, ve které se zřídilo vaše zařízení.

    3. V nabídce vlevo v části Správa zařízení vyberte Zařízení.

    4. Zaškrtněte políčko vedle ID zařízení zařízení, které jste zaregistrovali v tomto článku.

    5. V horní části podokna vyberte Odstranit.

  1. Pokud jste postupovali podle kroků v části Vytvoření a zřízení simulovaného zařízení TPM pro vytvoření simulovaného zařízení TPM, proveďte následující kroky:

    1. Zavřete okno simulátoru TPM a okno výstupu ukázky pro simulované zařízení.

    2. Na webu Azure Portal přejděte do služby IoT Hub, ve které se zřídilo vaše zařízení.

    3. V nabídce vlevo v části Správa zařízení vyberte Zařízení.

    4. Zaškrtněte políčko vedle ID zařízení zařízení, které jste zaregistrovali v tomto článku.

    5. V horní části podokna vyberte Odstranit.

Další kroky

V tomto článku jste programově vytvořili jednotlivou položku registrace pro zařízení TPM. Volitelně jste na počítači vytvořili simulované zařízení TPM a zřídili jste ho pro centrum IoT pomocí služby Azure IoT Hub Device Provisioning. Pokud chcete prozkoumat další informace, podívejte se na následující odkazy: