Skapa programmatiskt en individuell registrering av enhetsetableringstjänsten för TPM-attestering
Den här artikeln visar hur du programmatiskt skapar en enskild registrering för en TPM-enhet i Azure IoT Hub Device Provisioning Service med hjälp av Azure IoT Hub DPS-tjänstenS SDK och ett exempelprogram. När du har skapat den enskilda registreringen kan du registrera en simulerad TPM-enhet till etableringstjänsten via den här registreringsposten.
Även om de här stegen fungerar på både Windows- och Linux-datorer använder den här artikeln en Windows-utvecklingsdator.
Förutsättningar
-
Om du inte har en Azure-prenumeration skapar du ett kostnadsfritt Azure-konto innan du börjar.
Slutför stegen i Konfigurera IoT Hub Device Provisioning Service med Azure Portal.
Installera .NET 6.0 SDK eller senare eller senare på din Windows-baserade dator. Du kan använda följande kommando för att kontrollera din version.
dotnet --info
(Valfritt) Om du vill registrera en simulerad enhet i slutet av den här artikeln följer du proceduren i Skapa och etablera en simulerad TPM-enhet fram till steget där du får en bekräftelsenyckel för enheten. Spara bekräftelsenyckeln när du använder den senare i den här artikeln.
Kommentar
Följ inte stegen för att skapa en enskild registrering med hjälp av Azure Portal.
Installera Node.js v4.0+.
(Valfritt) Om du vill registrera en simulerad enhet i slutet av den här artikeln följer du proceduren i Skapa och etablera en simulerad TPM-enhet fram till steget där du får en bekräftelsenyckel och registrerings-ID för enheten. Spara bekräftelsenyckeln och registrerings-ID:t när du använder dem senare i den här artikeln.
Kommentar
Följ inte stegen för att skapa en enskild registrering med hjälp av Azure Portal.
Installera Java SE Development Kit 8. Den här artikeln installerar Java Service SDK senare i artikeln. Det fungerar på både Windows och Linux. Den här artikeln använder Windows.
Installera Maven 3.
Installera Git och se till att sökvägen läggs till i miljövariabeln
PATH
.(Valfritt) Om du vill registrera en simulerad enhet i slutet av den här artikeln följer du proceduren i Skapa och etablera en simulerad TPM-enhet fram till steget där du får en bekräftelsenyckel för enheten. Observera bekräftelsenyckeln och registrerings-ID:t när du använder dem senare i den här artikeln.
Kommentar
Följ inte stegen för att skapa en enskild registrering med hjälp av Azure Portal.
Hämta TPM-bekräftelsenyckel (valfritt)
Du kan följa stegen i den här artikeln för att skapa ett exempel på individuell registrering. I det här fallet kan du visa registreringsposten i DPS, men du kommer inte att kunna använda den för att etablera en enhet.
Du kan också välja att följa stegen i den här artikeln för att skapa en enskild registrering och registrera en simulerad TPM-enhet. Om du vill registrera en simulerad enhet i slutet av den här artikeln följer du proceduren i Skapa och etablera en simulerad TPM-enhet fram till steget där du får en bekräftelsenyckel för enheten. Spara bekräftelsenyckeln när du använder den senare i den här artikeln.
Kommentar
Följ inte stegen för att skapa en enskild registrering med hjälp av Azure Portal.
Du kan också välja att följa stegen i den här artikeln för att skapa en enskild registrering och registrera en simulerad TPM-enhet. Om du vill registrera en simulerad enhet i slutet av den här artikeln följer du proceduren i Skapa och etablera en simulerad TPM-enhet fram till steget där du får en bekräftelsenyckel och registrerings-ID för enheten. Spara bekräftelsenyckeln och registrerings-ID:t när du använder dem senare i den här artikeln.
Kommentar
Följ inte stegen för att skapa en enskild registrering med hjälp av Azure Portal.
Du kan också välja att följa stegen i den här artikeln för att skapa en enskild registrering och registrera en simulerad TPM-enhet. Om du vill registrera en simulerad enhet i slutet av den här artikeln följer du proceduren i Skapa och etablera en simulerad TPM-enhet fram till steget där du får en bekräftelsenyckel för enheten. Observera bekräftelsenyckeln och registrerings-ID:t när du använder dem senare i den här artikeln.
Kommentar
Följ inte stegen för att skapa en enskild registrering med hjälp av Azure Portal.
Hämta anslutningssträngen för etableringstjänsten
För exemplet i den här artikeln måste du kopiera anslutningssträng för etableringstjänsten.
Logga in på Azure-portalen.
På den vänstra menyn eller på portalsidan väljer du Alla resurser.
Välj enhetsetableringstjänsten.
I menyn Inställningar väljer du Principer för delad åtkomst.
Välj den åtkomstprincip som du vill använda.
I panelen Åtkomstprincip kopierar och sparar du den primära nyckeln anslutningssträng.
Skapa ett exempel på enskild registrering
Det här avsnittet visar hur du skapar en .NET Core-konsolapp som lägger till en enskild registrering för en TPM-enhet i etableringstjänsten.
Öppna en Windows-kommandotolk och gå till en mapp där du vill skapa din app.
Kör följande kommando för att skapa ett konsolprojekt:
dotnet new console --framework net6.0 --use-program-main
Om du vill lägga till en referens till DPS-tjänstens SDK kör du följande kommando:
dotnet add package Microsoft.Azure.Devices.Provisioning.Service
Det här steget laddar ned, installerar och lägger till en referens till Azure IoT DPS-tjänstklientens NuGet-paket och dess beroenden. Det här paketet innehåller binärfilerna för .NET Service SDK.
Öppna Program.cs fil i ett redigeringsprogram.
Ersätt namespace-instruktionen överst i filen med följande:
namespace CreateIndividualEnrollment;
Lägg till följande
using
instruktioner överst i filen ovanför -instruktionennamespace
:using System.Threading.Tasks; using Microsoft.Azure.Devices.Provisioning.Service;
Lägg till följande fält i
Program
klassen och gör ändringarna i listan.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
Ersätt platshållarvärdet med anslutningssträng för etableringstjänsten som du kopierade i föregående avsnitt.Om du använder den här artikeln tillsammans med snabbstarten Skapa och etablera en simulerad TPM-enhet för att etablera en simulerad enhet ersätter du bekräftelsenyckeln med det värde som du antecknade i den snabbstarten. Du kan ersätta enhets-ID och registrerings-ID med de värden som föreslås i den snabbstarten, använda dina egna värden eller använda standardvärdena i det här exemplet.
Lägg till följande metod i
Program
klassen. Den här koden skapar en enskild registreringspost och anroparCreateOrUpdateIndividualEnrollmentAsync
sedan metoden förProvisioningServiceClient
att lägga till den enskilda registreringen i etableringstjänsten.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 } }
Ersätt slutligen
Main
metoden med följande rader:static async Task Main(string[] args) { await RunSample(); Console.WriteLine("\nHit <Enter> to exit ..."); Console.ReadLine(); }
Spara dina ändringar.
Från ett kommandofönster i arbetsmappen kör du:
npm install azure-iot-provisioning-service
Det här steget laddar ned, installerar och lägger till en referens till Azure IoT DPS-tjänstklientpaketet och dess beroenden. Det här paketet innehåller binärfilerna för Node.js service SDK.
Med en textredigerare skapar du filen create_individual_enrollment.js i arbetsmappen. Lägg till följande kod i filen:
'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)); } });
Spara filen.
Öppna en kommandotolk i Windows.
Klona Microsoft Azure IoT SDK:er för Java GitHub-lagringsplatsen:
git clone https://github.com/Azure/azure-iot-sdk-java.git --recursive
Gå till exempelmappen:
cd azure-iot-sdk-java\provisioning\provisioning-service-client-samples\service-enrollment-sample
Öppna filen \src\main\java\samples\com\microsoft\azure\sdk\iot\ServiceEnrollmentSample.java i ett redigeringsprogram.
Ersätt
[Provisioning Connection String]
med anslutningssträng som du kopierade i Hämta anslutningssträng för etableringstjänsten.private static final String PROVISIONING_CONNECTION_STRING = "[Provisioning Connection String]";
Lägg till TPM-enhetsinformationen.
[RegistrationId]
Ersätt och[TPM Endorsement Key]
i följande instruktioner med din bekräftelsenyckel och registrerings-ID.private static final String REGISTRATION_ID = "[RegistrationId]"; private static final String TPM_ENDORSEMENT_KEY = "[TPM Endorsement Key]";
Om du använder den här artikeln tillsammans med snabbstarten Skapa och etablera en simulerad TPM-enhet för att etablera en simulerad enhet använder du nyckelvärdena Registrerings-ID och Bekräftelse som du antecknade från den snabbstarten.
Om du använder den här artikeln för att bara skapa en enskild exempelregistrering och inte tänker använda den för att registrera en enhet kan du använda följande värde för en bekräftelsenyckel:
private static final String TPM_ENDORSEMENT_KEY = "AToAAQALAAMAsgAgg3GXZ0SEs/gakMyNRqXXJP1S124GUgtk8qHaGzMUaaoABgCAAEMAEAgAAAAAAAEAxsj2gUScTk1UjuioeTlfGYZrrimExB+bScH75adUMRIi2UOMxG1kw4y+9RW/IVoMl4e620VxZad0ARX2gUqVjYO7KPVt3dyKhZS3dkcvfBisBhP1XH9B33VqHG9SHnbnQXdBUaCgKAfxome8UmBKfe+naTsE5fkvjb/do3/dD6l4sGBwFCnKRdln4XpM03zLpoHFao8zOwt8l/uP3qUIxmCYv9A7m69Ms+5/pCkTu/rK4mRDsfhZ0QLfbzVI6zQFOKF/rwsfBtFeWlWtcuJMKlXdD8TXWElTzgh7JS4qhFzreL0c1mI0GCj+Aws0usZh7dLIVPnefZcBhgy1SSDQMQ==";
Ange ditt eget värde för registrerings-ID:t, till exempel "myJavaDevice".
För enskilda registreringar kan du välja att ange ett enhets-ID som DPS tilldelar enheten när den etablerar den till IoT Hub. Om du inte tilldelar ett enhets-ID använder DPS registrerings-ID:t som enhets-ID. Som standard tilldelar det här exemplet "myJavaDevice" som enhets-ID. Om du vill ändra enhets-ID:t ändrar du följande instruktion:
private static final String DEVICE_ID = "myJavaDevice";
Om du inte vill tilldela ett specifikt enhets-ID kommenterar du ut följande instruktion:
individualEnrollment.setDeviceId(DEVICE_ID);
Med exemplet kan du ange en IoT-hubb i den enskilda registreringen som enheten ska etableras till. Den här IoT-hubben måste vara en som tidigare har länkats till etableringstjänsten. I den här artikeln låter vi DPS välja mellan de länkade hubbarna enligt standardallokeringsprincipen, jämnt viktad distribution. Kommentera ut följande instruktion i filen:
individualEnrollment.setIotHubHostName(IOTHUB_HOST_NAME);
Exemplet skapar, uppdaterar, frågar och tar bort en enskild TPM-enhetsregistrering. Om du vill verifiera lyckad registrering i portalen kommenterar du tillfälligt ut följande kodrader i slutet av filen:
// *********************************** Delete info of individualEnrollment ************************************ System.out.println("\nDelete the individualEnrollment..."); provisioningServiceClient.deleteIndividualEnrollment(REGISTRATION_ID);
Spara dina ändringar.
Köra exemplet på enskild registrering
Kör exemplet:
dotnet run
När det har skapats visar kommandofönstret egenskaperna för den nya registreringen.
För att köra exemplet behöver du anslutningssträng för etableringstjänsten som du kopierade i föregående avsnitt och bekräftelsenyckeln för enheten. Om du har följt snabbstarten Skapa och etablera en simulerad enhet för att skapa en simulerad TPM-enhet använder du bekräftelsenyckeln som skapats för den enheten. Om du vill skapa ett exempel på en enskild registrering kan du använda följande bekräftelsenyckel som medföljer Node.js Service SDK:
AToAAQALAAMAsgAgg3GXZ0SEs/gakMyNRqXXJP1S124GUgtk8qHaGzMUaaoABgCAAEMAEAgAAAAAAAEAxsj2gUScTk1UjuioeTlfGYZrrimExB+bScH75adUMRIi2UOMxG1kw4y+9RW/IVoMl4e620VxZad0ARX2gUqVjYO7KPVt3dyKhZS3dkcvfBisBhP1XH9B33VqHG9SHnbnQXdBUaCgKAfxome8UmBKfe+naTsE5fkvjb/do3/dD6l4sGBwFCnKRdln4XpM03zLpoHFao8zOwt8l/uP3qUIxmCYv9A7m69Ms+5/pCkTu/rK4mRDsfhZ0QLfbzVI6zQFOKF/rwsfBtFeWlWtcuJMKlXdD8TXWElTzgh7JS4qhFzreL0c1mI0GCj+Aws0usZh7dLIVPnlgZcBhgy1SSDQMQ==
Om du vill skapa en enskild registrering för din TPM-enhet kör du följande kommando (ta med citattecknen runt kommandoargumenten):
node create_individual_enrollment.js "<the connection string for your provisioning service>" "<endorsement key>"
När det har skapats visar kommandofönstret egenskaperna för den nya registreringen.
Från mappen azure-iot-sdk-java\provisioning\provisioning-service-client-samples\service-enrollment-sample i kommandotolken kör du följande kommando för att skapa exemplet:
mvn install -DskipTests
Det här kommandot laddar ned Azure IoT DPS-tjänstklienten Maven-paketet till datorn och skapar exemplet. Det här paketet innehåller binärfilerna för Java Service SDK.
Växla till målmappen och kör exemplet. Versionen i föregående steg matar ut .jar fil i målmappen med följande filformat:
service-enrollment-sample-{version}-with-deps.jar
; till exempel:service-enrollment-sample-1.8.1-with-deps.jar
. Du kan behöva ersätta versionen i följande kommando.cd target java -jar ./service-enrollment-sample-1.8.1-with-deps.jar
När det har skapats visar kommandofönstret egenskaperna för den nya registreringen.
Så här kontrollerar du att den enskilda registreringen har skapats:
I Azure Portal navigerar du till instansen av enhetsetableringstjänsten.
I menyn Inställningar väljer du Hantera registreringar.
Välj fliken Enskilda registreringar . Du bör se en ny registreringspost som motsvarar det registrerings-ID som du använde i exemplet.
Registrera en simulerad enhet (valfritt)
Om du har följt stegen i snabbstarten Skapa och etablera en simulerad TPM-enhet för att etablera en simulerad enhet återupptar du snabbstarten på Registrera enheten.
Om du har följt stegen i snabbstarten Skapa och etablera en simulerad TPM-enhet för att etablera en simulerad enhet återupptar du snabbstarten på Registrera enheten.
Om du har följt stegen i snabbstarten Skapa och etablera en simulerad TPM-enhet för att etablera en simulerad enhet återupptar du snabbstarten på Registrera enheten.
Rensa resurser
Om du planerar att utforska DPS-självstudierna ska du inte rensa resurserna som skapas i den här artikeln. Annars kan du använda följande steg för att ta bort alla resurser som skapats av den här artikeln.
I Azure Portal navigerar du till instansen av enhetsetableringstjänsten.
I menyn Inställningar väljer du Hantera registreringar.
Välj fliken Enskilda registreringar .
Markera kryssrutan bredvid registrerings-ID:t för registreringsposten som du skapade i den här artikeln.
Välj Ta bort längst upp på sidan.
Om du följde stegen i Skapa och etablera en simulerad TPM-enhet för att skapa en simulerad TPM-enhet gör du följande:
I Azure-portalen går du till den IoT Hub där din enhet etablerades.
På den vänstra menyn under Enhetshantering väljer du Enheter.
Markera kryssrutan bredvid enhets-ID:t för den enhet som du registrerade i den här artikeln.
Längst upp i fönstret väljer du Ta bort.
Om du följde stegen i Skapa och etablera en simulerad TPM-enhet för att skapa en simulerad TPM-enhet gör du följande:
Stäng TPM-simulatorfönstret och exempelutdatafönstret för den simulerade enheten.
I Azure-portalen går du till den IoT Hub där din enhet etablerades.
På den vänstra menyn under Enhetshantering väljer du Enheter.
Markera kryssrutan bredvid enhets-ID:t för den enhet som du registrerade i den här artikeln.
Längst upp i fönstret väljer du Ta bort.
Om du följde stegen i Skapa och etablera en simulerad TPM-enhet för att skapa en simulerad TPM-enhet gör du följande:
Stäng TPM-simulatorfönstret och exempelutdatafönstret för den simulerade enheten.
I Azure-portalen går du till den IoT Hub där din enhet etablerades.
På den vänstra menyn under Enhetshantering väljer du Enheter.
Markera kryssrutan bredvid enhets-ID:t för den enhet som du registrerade i den här artikeln.
Längst upp i fönstret väljer du Ta bort.
Nästa steg
I den här artikeln har du programmatiskt skapat en enskild registreringspost för en TPM-enhet. Du kan också skapa en TPM-simulerad enhet på datorn och etablera den till din IoT-hubb med hjälp av Azure IoT Hub Device Provisioning Service. Mer information finns på följande länkar:
Mer information om TPM-attestering med DPS finns i TPM-attestering.
Ett exempel från slutpunkt till slutpunkt på en etablering av en enhet via en enskild registrering med TPM-attestering finns i snabbstarten Etablera en simulerad TPM-enhet .
Mer information om hur du hanterar enskilda registreringar och registreringsgrupper med hjälp av Azure Portal finns i Hantera enhetsregistreringar med Azure Portal.