Delen via


Programmatisch een afzonderlijke inschrijving voor De Device Provisioning Service maken voor TPM-attestation

In dit artikel leest u hoe u programmatisch een afzonderlijke inschrijving maakt voor een TPM-apparaat in Azure IoT Hub Device Provisioning Service met behulp van de Azure IoT Hub DPS-service-SDK en een voorbeeldtoepassing. Nadat u de afzonderlijke inschrijving hebt gemaakt, kunt u eventueel een gesimuleerd TPM-apparaat inschrijven bij de inrichtingsservice via deze inschrijvingsvermelding.

Hoewel deze stappen zowel op Windows- als op Linux-computers werken, gebruiken we in dit artikel een Windows-ontwikkelcomputer.

Vereisten

  • Installeer .NET 6.0 SDK of hoger of hoger op uw Windows-computer. U kunt de volgende opdracht gebruiken om uw versie te controleren.

    dotnet --info
    
  • (Optioneel) Als u aan het einde van dit artikel een gesimuleerd apparaat wilt inschrijven, volgt u de procedure in Maken en inrichten van een gesimuleerd TPM-apparaat tot aan de stap waarin u een goedkeuringssleutel voor het apparaat krijgt. Sla de goedkeuringssleutel op, zoals u deze verderop in dit artikel gebruikt.

    Notitie

    Voer niet de stappen voor het maken van een afzonderlijke inschrijving via Azure Portal uit.

  • Installeer Node.js v4.0+.

  • (Optioneel) Als u aan het einde van dit artikel een gesimuleerd apparaat wilt inschrijven, volgt u de procedure in Maken en inrichten van een gesimuleerd TPM-apparaat tot aan de stap waarin u een goedkeuringssleutel en registratie-id voor het apparaat krijgt. Sla de goedkeuringssleutel en registratie-id op, omdat u deze verderop in dit artikel gebruikt.

    Notitie

    Voer niet de stappen voor het maken van een afzonderlijke inschrijving via Azure Portal uit.

  • Installeer de Java SE Development Kit 8. In dit artikel wordt de Java Service SDK verderop in het artikel geïnstalleerd. Deze is geschikt voor Windows en Linux. In dit artikel wordt Windows gebruikt.

  • Installeer Maven 3.

  • Installeer Git en zorg ervoor dat het pad wordt toegevoegd aan de omgevingsvariabele PATH.

  • (Optioneel) Als u aan het einde van dit artikel een gesimuleerd apparaat wilt inschrijven, volgt u de procedure in Maken en inrichten van een gesimuleerd TPM-apparaat tot aan de stap waarin u een goedkeuringssleutel voor het apparaat krijgt. Noteer de goedkeuringssleutel en de registratie-id, omdat u deze verderop in dit artikel gebruikt.

    Notitie

    Voer niet de stappen voor het maken van een afzonderlijke inschrijving via Azure Portal uit.

TPM-goedkeuringssleutel ophalen (optioneel)

U kunt de stappen in dit artikel volgen om een afzonderlijke voorbeeldinschrijving te maken. In dit geval kunt u de inschrijvingsvermelding bekijken in DPS, maar u kunt deze niet gebruiken om een apparaat in te richten.

U kunt er ook voor kiezen om de stappen in dit artikel te volgen om een afzonderlijke inschrijving te maken en een gesimuleerd TPM-apparaat in te schrijven. Als u aan het einde van dit artikel een gesimuleerd apparaat wilt inschrijven, volgt u de procedure in Maken en inrichten van een gesimuleerd TPM-apparaat tot aan de stap waarin u een goedkeuringssleutel voor het apparaat krijgt. Sla de goedkeuringssleutel op, omdat u deze verderop in dit artikel gebruikt.

Notitie

Voer niet de stappen voor het maken van een afzonderlijke inschrijving via Azure Portal uit.

U kunt er ook voor kiezen om de stappen in dit artikel te volgen om een afzonderlijke inschrijving te maken en een gesimuleerd TPM-apparaat in te schrijven. Als u aan het einde van dit artikel een gesimuleerd apparaat wilt inschrijven, volgt u de procedure in Maken en inrichten van een gesimuleerd TPM-apparaat tot aan de stap waarin u een goedkeuringssleutel en registratie-id voor het apparaat krijgt. Sla de goedkeuringssleutel en registratie-id op, omdat u deze verderop in dit artikel gebruikt.

Notitie

Voer niet de stappen voor het maken van een afzonderlijke inschrijving via Azure Portal uit.

U kunt er ook voor kiezen om de stappen in dit artikel te volgen om een afzonderlijke inschrijving te maken en een gesimuleerd TPM-apparaat in te schrijven. Als u aan het einde van dit artikel een gesimuleerd apparaat wilt inschrijven, volgt u de procedure in Maken en inrichten van een gesimuleerd TPM-apparaat tot aan de stap waarin u een goedkeuringssleutel voor het apparaat krijgt. Noteer de goedkeuringssleutel en de registratie-id, omdat u deze verderop in dit artikel gebruikt.

Notitie

Voer niet de stappen voor het maken van een afzonderlijke inschrijving via Azure Portal uit.

De verbindingsreeks voor de inrichtingsservice ophalen

Voor het voorbeeld in dit artikel moet u de verbindingsreeks voor uw inrichtingsservice kopiëren.

  1. Meld u aan bij de Azure-portal.

  2. Selecteer Alle resources in het linkermenu of op de portalpagina.

  3. Selecteer uw Device Provisioning Service.

  4. Selecteer beleid voor gedeelde toegang in het menu Instellingen.

  5. Selecteer het toegangsbeleid dat u wilt gebruiken.

  6. Kopieer en sla in het deelvenster Toegangsbeleid de primaire sleutel op verbindingsreeks.

    Get provisioning service connection string from the portal.

Het voorbeeld van de afzonderlijke inschrijving maken

In deze sectie wordt beschreven hoe u een .NET Core-console-app maakt waarmee een afzonderlijke inschrijving voor een TPM-apparaat wordt toegevoegd aan uw inrichtingsservice.

  1. Open een Windows-opdrachtprompt en navigeer naar een map waarin u uw app wilt maken.

  2. Voer de volgende opdracht uit om een consoleproject te maken:

    dotnet new console --framework net6.0 --use-program-main 
    
  3. Voer de volgende opdracht uit om een verwijzing naar de DPS-service-SDK toe te voegen:

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

    Met deze stap downloadt, installeert en voegt u een verwijzing toe naar het NuGet-pakket van de Azure IoT DPS-serviceclient en de bijbehorende afhankelijkheden. Dit pakket bevat de binaire bestanden voor de .NET-service-SDK.

  4. Open het bestand Program.cs in een editor.

  5. Vervang de naamruimteinstructie boven aan het bestand door het volgende:

    namespace CreateIndividualEnrollment;
    
  6. Voeg de volgende using instructies toe boven aan het bestand boven de namespace instructie:

    using System.Threading.Tasks;
    using Microsoft.Azure.Devices.Provisioning.Service;
    
  7. Voeg de volgende velden toe aan de klasse Program en breng de vermelde wijzigingen aan.

    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;
    
    • Vervang de waarde van de ProvisioningServiceConnectionString tijdelijke aanduiding door de verbindingsreeks van de inrichtingsservice die u in de vorige sectie hebt gekopieerd.

    • Als u dit artikel samen met de quickstart voor een gesimuleerd TPM-apparaat maken en inrichten om een gesimuleerd apparaat in te richten, vervangt u de goedkeuringssleutel door de waarde die u in deze quickstart hebt genoteerd. U kunt de apparaat-id en registratie-id vervangen door de waarden die in die quickstart worden voorgesteld, uw eigen waarden gebruiken of de standaardwaarden in dit voorbeeld gebruiken.

  8. Voeg de volgende methode toe aan de klasse Program. Met deze code maakt u een afzonderlijke inschrijvingsvermelding en roept u vervolgens de CreateOrUpdateIndividualEnrollmentAsync methode aan om ProvisioningServiceClient de afzonderlijke inschrijving toe te voegen aan de inrichtingsservice.

    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. Vervang tot slot de Main-methode door de volgende regels:

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

  1. Voer vanuit een opdrachtvenster in de werkmap het volgende uit:

    npm install azure-iot-provisioning-service
    

    Met deze stap downloadt, installeert en voegt u een verwijzing toe naar het Azure IoT DPS-serviceclientpakket en de bijbehorende afhankelijkheden. Dit pakket bevat de binaire bestanden voor de Node.js-service-SDK.

  2. Maak met behulp van een teksteditor een bestand create_individual_enrollment.js in de werkmap. Voeg de volgende code toe aan het bestand:

    '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. Sla het bestand op.

  1. Open een Windows-opdrachtprompt.

  2. Kloon de Microsoft Azure IoT SDK's voor Java GitHub-opslagplaats:

    git clone https://github.com/Azure/azure-iot-sdk-java.git --recursive
    
  3. Ga naar de voorbeeldmap:

    cd azure-iot-sdk-java\provisioning\provisioning-service-client-samples\service-enrollment-sample
    
  4. Open het bestand \src\main\java\samples\com\microsoft\azure\sdk\iot\ServiceEnrollmentSample.java in een editor.

  5. Vervang [Provisioning Connection String] door de verbindingsreeks die u hebt gekopieerd in Get the verbindingsreeks for your provisioning service.

    private static final String PROVISIONING_CONNECTION_STRING = "[Provisioning Connection String]";
    
  6. Voeg de details van het TPM-apparaat toe. Vervang de [RegistrationId] en [TPM Endorsement Key] in de volgende instructies door uw goedkeuringssleutel en registratie-id.

    private static final String REGISTRATION_ID = "[RegistrationId]";
    private static final String TPM_ENDORSEMENT_KEY = "[TPM Endorsement Key]";
    
    • Als u dit artikel samen met de quickstart voor een gesimuleerd TPM-apparaat maken en inrichten om een gesimuleerd apparaat in te richten, gebruikt u de waarden voor registratie-id en goedkeuringssleutel die u in die quickstart hebt genoteerd.

    • Als u dit artikel gebruikt om alleen een voorbeeld van een afzonderlijke inschrijving te maken en deze niet wilt gebruiken om een apparaat in te schrijven, kunt u de volgende waarde gebruiken voor een goedkeuringssleutel:

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

      Voer uw eigen waarde in voor de registratie-id, bijvoorbeeld 'myJavaDevice'.

  7. Voor afzonderlijke inschrijvingen kunt u ervoor kiezen om een apparaat-id in te stellen die DPS aan het apparaat toewijst wanneer het wordt ingericht voor IoT Hub. Als u geen apparaat-id toewijst, gebruikt DPS de registratie-id als de apparaat-id. Standaard wijst dit voorbeeld 'myJavaDevice' toe als de apparaat-id. Als u de apparaat-id wilt wijzigen, wijzigt u de volgende instructie:

        private static final String DEVICE_ID = "myJavaDevice";
    

    Als u geen specifieke apparaat-id wilt toewijzen, markeert u de volgende instructie:

    individualEnrollment.setDeviceId(DEVICE_ID);
    
  8. Met het voorbeeld kunt u een IoT-hub instellen in de afzonderlijke inschrijving om het apparaat in te richten. Deze IoT-hub moet een hub zijn die eerder is gekoppeld aan de inrichtingsservice. Voor dit artikel laten we DPS kiezen uit de gekoppelde hubs volgens het standaardtoewijzingsbeleid, gelijkmatig gewogen distributie. Markeer de volgende instructie in het bestand als commentaar:

    individualEnrollment.setIotHubHostName(IOTHUB_HOST_NAME);
    
  9. In het voorbeeld worden een afzonderlijke TPM-apparaatinschrijving gemaakt, bijgewerkt, opgevraagd en verwijderd. Als u wilt controleren of de inschrijving is geslaagd in de portal, markeert u tijdelijk de volgende coderegels aan het einde van het bestand:

    // *********************************** Delete info of individualEnrollment ************************************
    System.out.println("\nDelete the individualEnrollment...");
    provisioningServiceClient.deleteIndividualEnrollment(REGISTRATION_ID);
    
  10. Uw wijzigingen opslaan.

Het voorbeeld van de afzonderlijke inschrijving uitvoeren

  1. Voer het voorbeeld uit:

    dotnet run
    
  2. Wanneer het maken is voltooid, worden in het opdrachtvenster de eigenschappen van de nieuwe inschrijving weergegeven.

Als u het voorbeeld wilt uitvoeren, hebt u de verbindingsreeks nodig voor uw inrichtingsservice die u in de vorige sectie hebt gekopieerd en de goedkeuringssleutel voor het apparaat. Als u de quickstart voor het maken en inrichten van een gesimuleerd apparaat hebt gevolgd om een gesimuleerd TPM-apparaat te maken, gebruikt u de goedkeuringssleutel die voor dat apparaat is gemaakt. U kunt anders de volgende goedkeuringssleutel gebruiken die is opgegeven met de Node.js Services-SDK, om een voorbeeld te maken van een afzonderlijke inschrijving:

AToAAQALAAMAsgAgg3GXZ0SEs/gakMyNRqXXJP1S124GUgtk8qHaGzMUaaoABgCAAEMAEAgAAAAAAAEAxsj2gUScTk1UjuioeTlfGYZrrimExB+bScH75adUMRIi2UOMxG1kw4y+9RW/IVoMl4e620VxZad0ARX2gUqVjYO7KPVt3dyKhZS3dkcvfBisBhP1XH9B33VqHG9SHnbnQXdBUaCgKAfxome8UmBKfe+naTsE5fkvjb/do3/dD6l4sGBwFCnKRdln4XpM03zLpoHFao8zOwt8l/uP3qUIxmCYv9A7m69Ms+5/pCkTu/rK4mRDsfhZ0QLfbzVI6zQFOKF/rwsfBtFeWlWtcuJMKlXdD8TXWElTzgh7JS4qhFzreL0c1mI0GCj+Aws0usZh7dLIVPnlgZcBhgy1SSDQMQ==
  1. Voer de volgende opdracht uit om een afzonderlijke inschrijving te maken voor uw TPM-apparaat (inclusief de aanhalingstekens rond het opdrachtargumenten):

    node create_individual_enrollment.js "<the connection string for your provisioning service>" "<endorsement key>"
    
  2. Wanneer het maken is voltooid, worden in het opdrachtvenster de eigenschappen van de nieuwe inschrijving weergegeven.

  1. Voer vanuit de map azure-iot-sdk-java\provisioning\provisioning-service-client-samples\service-enrollment-sample in uw opdrachtprompt de volgende opdracht uit om het voorbeeld te bouwen:

    mvn install -DskipTests
    

    Met deze opdracht downloadt u het Maven-pakket van de Azure IoT DPS-serviceclient naar uw computer en bouwt u het voorbeeld. Dit pakket bevat de binaire bestanden voor de Java-service-SDK.

  2. Ga naar de doelmap en voer het voorbeeld uit. De build in de vorige stap voert een JAR-bestand uit in de doelmap met de volgende bestandsindeling: service-enrollment-sample-{version}-with-deps.jarbijvoorbeeld: service-enrollment-sample-1.8.1-with-deps.jar. Mogelijk moet u de versie in de volgende opdracht vervangen.

    cd target
    java -jar ./service-enrollment-sample-1.8.1-with-deps.jar
    
  3. Wanneer het maken is voltooid, worden in het opdrachtvenster de eigenschappen van de nieuwe inschrijving weergegeven.

Ga als volgt te werk om te controleren of de afzonderlijke inschrijving is gemaakt:

  1. Navigeer in Azure Portal naar uw Device Provisioning Service-exemplaar.

  2. Selecteer Inschrijvingen beheren in het menu Instellingen.

  3. Selecteer het tabblad Afzonderlijke inschrijvingen . U ziet nu een nieuwe inschrijvingsvermelding die overeenkomt met de registratie-id die u in het voorbeeld hebt gebruikt.

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.

Een gesimuleerd apparaat inschrijven (optioneel)

Als u de stappen in de quickstart voor een gesimuleerd TPM-apparaat maken en inrichten om een gesimuleerd apparaat in te richten, hervat u de quickstart bij Het apparaat registreren.

Als u de stappen in de quickstart voor een gesimuleerd TPM-apparaat maken en inrichten om een gesimuleerd apparaat in te richten, hervat u de quickstart bij Het apparaat registreren.

Als u de stappen in de quickstart voor een gesimuleerd TPM-apparaat maken en inrichten om een gesimuleerd apparaat in te richten, hervat u de quickstart bij Het apparaat registreren.

Resources opschonen

Als u van plan bent om de DPS-zelfstudies te verkennen, moet u de resources die in dit artikel zijn gemaakt, niet opschonen. Gebruik anders de volgende stappen om alle resources te verwijderen die in dit artikel zijn gemaakt.

  1. Navigeer in Azure Portal naar uw Device Provisioning Service-exemplaar.

  2. Selecteer Inschrijvingen beheren in het menu Instellingen.

  3. Selecteer het tabblad Afzonderlijke inschrijvingen .

  4. Schakel het selectievakje in naast de registratie-id van de inschrijvingsvermelding die u in dit artikel hebt gemaakt.

  5. Selecteer Verwijderen bovenaan de pagina.

  1. Als u de stappen in Een gesimuleerd TPM-apparaat maken en inrichten om een gesimuleerd TPM-apparaat te maken, voert u de volgende stappen uit:

    1. Navigeer in Azure Portal naar de IoT Hub waar het apparaat is ingericht.

    2. Selecteer Apparaten in het linkermenu onder Apparaatbeheer.

    3. Schakel het selectievakje in naast de apparaat-id van het apparaat dat u in dit artikel hebt geregistreerd.

    4. Selecteer Verwijderen bovenaan het deelvenster.

  1. Als u de stappen in Een gesimuleerd TPM-apparaat maken en inrichten om een gesimuleerd TPM-apparaat te maken, voert u de volgende stappen uit:

    1. Sluit het venster van de TPM-simulator en het voorbeelduitvoervenster voor het gesimuleerde apparaat.

    2. Navigeer in Azure Portal naar de IoT Hub waar het apparaat is ingericht.

    3. Selecteer Apparaten in het linkermenu onder Apparaatbeheer.

    4. Schakel het selectievakje in naast de apparaat-id van het apparaat dat u in dit artikel hebt geregistreerd.

    5. Selecteer Verwijderen bovenaan het deelvenster.

  1. Als u de stappen in Een gesimuleerd TPM-apparaat maken en inrichten om een gesimuleerd TPM-apparaat te maken, voert u de volgende stappen uit:

    1. Sluit het venster van de TPM-simulator en het voorbeelduitvoervenster voor het gesimuleerde apparaat.

    2. Navigeer in Azure Portal naar de IoT Hub waar het apparaat is ingericht.

    3. Selecteer Apparaten in het linkermenu onder Apparaatbeheer.

    4. Schakel het selectievakje in naast de apparaat-id van het apparaat dat u in dit artikel hebt geregistreerd.

    5. Selecteer Verwijderen bovenaan het deelvenster.

Volgende stappen

In dit artikel hebt u programmatisch een afzonderlijke inschrijvingsvermelding voor een TPM-apparaat gemaakt. U kunt ook een gesimuleerd TPM-apparaat hebben gemaakt op de computer en dit hebben ingericht voor uw IoT-hub met behulp van Azure IoT Hub Device Provisioning Service. Bekijk de volgende koppelingen voor meer informatie: