Creare una registrazione singola del servizio Device Provisioning a livello di codice per l'attestazione TPM

Questo articolo illustra come creare a livello di codice una registrazione singola per un dispositivo TPM nel servizio Device Provisioning hub IoT di Azure usando l'SDK del servizio Device Provisioning hub IoT di Azure e un'applicazione di esempio. Dopo aver creato la registrazione singola, è possibile registrare facoltativamente un dispositivo TPM simulato nel servizio di provisioning tramite questa voce di registrazione.

Questi passaggi funzionano su computer sia Windows che Linux, ma questo articolo usa un computer di sviluppo Windows.

Prerequisiti

  • Installare .NET 6.0 SDK o versione successiva o successiva nel computer basato su Windows. Per controllare la versione, è possibile usare il comando seguente.

    dotnet --info
    
  • (Facoltativo) Se si vuole registrare un dispositivo simulato alla fine di questo articolo, seguire la procedura descritta in Creare ed effettuare il provisioning di un dispositivo TPM simulato fino al passaggio in cui si ottiene una chiave di verifica dell'autenticità per il dispositivo. Salvare la chiave di verifica dell'autenticità, perché viene usata più avanti in questo articolo.

    Nota

    Non seguire la procedura per creare una registrazione singola con il portale di Azure.

  • Installare Node.js v4.0+.

  • (Facoltativo) Se si vuole registrare un dispositivo simulato alla fine di questo articolo, seguire la procedura descritta in Creare ed effettuare il provisioning di un dispositivo TPM simulato fino al passaggio in cui si ottiene una chiave di verifica dell'autenticità e un ID di registrazione per il dispositivo. Salvare la chiave di verifica dell'autenticità e l'ID registrazione, perché verranno usati più avanti in questo articolo.

    Nota

    Non seguire la procedura per creare una registrazione singola con il portale di Azure.

  • Installare Java SE Development Kit 8. Questo articolo installa Java Service SDK più avanti nell'articolo. Funziona sia in Windows che in Linux. Questo articolo usa Windows.

  • Installare Maven 3.

  • Installare Git e assicurarsi che il percorso venga aggiunto alla variabile PATHdi ambiente .

  • (Facoltativo) Se si vuole registrare un dispositivo simulato alla fine di questo articolo, seguire la procedura descritta in Creare ed effettuare il provisioning di un dispositivo TPM simulato fino al passaggio in cui si ottiene una chiave di verifica dell'autenticità per il dispositivo. Prendere nota della chiave di verifica dell'autenticità e dell'ID registrazione, perché verranno usati più avanti in questo articolo.

    Nota

    Non seguire la procedura per creare una registrazione singola con il portale di Azure.

Ottenere la chiave di verifica dell'autenticità TPM (facoltativo)

È possibile seguire la procedura descritta in questo articolo per creare una registrazione singola di esempio. In questo caso, sarà possibile visualizzare la voce di registrazione nel servizio Device Provisioning, ma non sarà possibile usarla per effettuare il provisioning di un dispositivo.

È anche possibile scegliere di seguire la procedura descritta in questo articolo per creare una registrazione singola e registrare un dispositivo TPM simulato. Se si vuole registrare un dispositivo simulato alla fine di questo articolo, seguire la procedura descritta in Creare ed effettuare il provisioning di un dispositivo TPM simulato fino al passaggio in cui si ottiene una chiave di verifica dell'autenticità per il dispositivo. Salvare la chiave di verifica dell'autenticità, perché verrà usata più avanti in questo articolo.

Nota

Non seguire la procedura per creare una registrazione singola con il portale di Azure.

È anche possibile scegliere di seguire la procedura descritta in questo articolo per creare una registrazione singola e registrare un dispositivo TPM simulato. Se si vuole registrare un dispositivo simulato alla fine di questo articolo, seguire la procedura descritta in Creare ed effettuare il provisioning di un dispositivo TPM simulato fino al passaggio in cui si ottiene una chiave di verifica dell'autenticità e un ID di registrazione per il dispositivo. Salvare la chiave di verifica dell'autenticità e l'ID registrazione, perché verranno usati più avanti in questo articolo.

Nota

Non seguire la procedura per creare una registrazione singola con il portale di Azure.

È anche possibile scegliere di seguire la procedura descritta in questo articolo per creare una registrazione singola e registrare un dispositivo TPM simulato. Se si vuole registrare un dispositivo simulato alla fine di questo articolo, seguire la procedura descritta in Creare ed effettuare il provisioning di un dispositivo TPM simulato fino al passaggio in cui si ottiene una chiave di verifica dell'autenticità per il dispositivo. Prendere nota della chiave di verifica dell'autenticità e dell'ID registrazione, perché verranno usati più avanti in questo articolo.

Nota

Non seguire la procedura per creare una registrazione singola con il portale di Azure.

Ottenere la stringa di connessione del servizio di provisioning

Per l'esempio in questo articolo, è necessario copiare il stringa di connessione per il servizio di provisioning.

  1. Accedere al portale di Azure.

  2. Nel menu a sinistra o nella pagina del portale selezionare Tutte le risorse.

  3. Selezionare il servizio Device Provisioning.

  4. Nel menu Impostazioni selezionare Criteri di accesso condiviso.

  5. Selezionare i criteri di accesso da usare.

  6. Nel pannello Criteri di accesso copiare e salvare la chiave primaria stringa di connessione.

    Ottenere stringa di connessione del servizio di provisioning dal portale.

Creare l'esempio di registrazione singola

Questa sezione illustra come creare un'app console .NET Core che aggiunge una registrazione singola per un dispositivo TPM al servizio di provisioning.

  1. Aprire un prompt dei comandi di Windows e passare a una cartella in cui si vuole creare l'app.

  2. Per creare un progetto console, eseguire il comando seguente:

    dotnet new console --framework net6.0 --use-program-main 
    
  3. Per aggiungere un riferimento all'SDK del servizio DPS, eseguire il comando seguente:

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

    Questo passaggio scarica, installa e aggiunge un riferimento al pacchetto NuGet del client del servizio Device Provisioning IoT di Azure e alle relative dipendenze. Questo pacchetto include i file binari per .NET Service SDK.

  4. Aprire Program.cs file in un editor.

  5. Sostituire l'istruzione dello spazio dei nomi all'inizio del file con quanto segue:

    namespace CreateIndividualEnrollment;
    
  6. Aggiungere le istruzioni seguenti using all'inizio del file sopra l'istruzione namespace :

    using System.Threading.Tasks;
    using Microsoft.Azure.Devices.Provisioning.Service;
    
  7. Aggiungere i campi seguenti alla classe Program e apportare le modifiche indicate.

    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;
    
    • Sostituire il ProvisioningServiceConnectionString valore segnaposto con il stringa di connessione del servizio di provisioning copiato nella sezione precedente.

    • Se si usa questo articolo insieme alla guida introduttiva Creare ed effettuare il provisioning di un dispositivo TPM simulato per effettuare il provisioning di un dispositivo simulato, sostituire la chiave di verifica dell'autenticità con il valore annotato in questa guida introduttiva. È possibile sostituire l'ID dispositivo e l'ID registrazione con i valori suggeriti in tale guida introduttiva, usare i propri valori o usare i valori predefiniti in questo esempio.

  8. Aggiungere il seguente metodo alla classe Program. Questo codice crea una singola voce di registrazione e quindi chiama il CreateOrUpdateIndividualEnrollmentAsync metodo su ProvisioningServiceClient per aggiungere la registrazione singola al servizio di provisioning.

    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. Sostituire infine il metodo Main con le righe seguenti:

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

  1. In una finestra di comando della cartella di lavoro eseguire:

    npm install azure-iot-provisioning-service
    

    Questo passaggio scarica, installa e aggiunge un riferimento al pacchetto client del servizio Dps IoT di Azure e alle relative dipendenze. Questo pacchetto include i file binari per l'SDK del servizio Node.js.

  2. Con un editor di testo creare un file create_individual_enrollment.js nella cartella di lavoro. Aggiungere il seguente codice al 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. Salvare il file.

  1. Aprire un prompt dei comandi di Windows.

  2. Clonare il repository GitHub di Microsoft Azure IoT SDK per Java:

    git clone https://github.com/Azure/azure-iot-sdk-java.git --recursive
    
  3. Passare alla cartella di esempio:

    cd azure-iot-sdk-java\provisioning\provisioning-service-client-samples\service-enrollment-sample
    
  4. Aprire il file \src\main\java\samples\com\microsoft\azure\sdk\iot\ServiceEnrollmentSample.java in un editor.

  5. Sostituire [Provisioning Connection String] con il stringa di connessione copiato in Ottenere il stringa di connessione per il servizio di provisioning.

    private static final String PROVISIONING_CONNECTION_STRING = "[Provisioning Connection String]";
    
  6. Aggiungere i dettagli del dispositivo TPM. [RegistrationId] Sostituire e [TPM Endorsement Key] nelle istruzioni seguenti con la chiave di verifica dell'autenticità e l'ID registrazione.

    private static final String REGISTRATION_ID = "[RegistrationId]";
    private static final String TPM_ENDORSEMENT_KEY = "[TPM Endorsement Key]";
    
    • Se si usa questo articolo insieme alla guida introduttiva Creare ed effettuare il provisioning di un dispositivo TPM simulato per effettuare il provisioning di un dispositivo simulato, usare i valori di ID registrazione e chiave di verifica dell'autenticità annotati da tale avvio rapido.

    • Se si usa questo articolo per creare solo una registrazione singola di esempio e non si intende usarlo per registrare un dispositivo, è possibile usare il valore seguente per una chiave di verifica dell'autenticità:

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

      Immettere il proprio valore per l'ID di registrazione, ad esempio "myJavaDevice".

  7. Per le registrazioni individuali, è possibile scegliere di impostare un ID dispositivo assegnato dal servizio Device Provisioning al dispositivo quando ne effettua il provisioning in hub IoT. Se non si assegna un ID dispositivo, DPS usa l'ID registrazione come ID dispositivo. Per impostazione predefinita, questo esempio assegna "myJavaDevice" come ID dispositivo. Per modificare l'ID dispositivo, modificare l'istruzione seguente:

        private static final String DEVICE_ID = "myJavaDevice";
    

    Se non si vuole assegnare un ID dispositivo specifico, impostare come commento l'istruzione seguente:

    individualEnrollment.setDeviceId(DEVICE_ID);
    
  8. L'esempio consente di impostare un hub IoT nella registrazione singola per effettuare il provisioning del dispositivo. Questo hub IoT deve essere uno collegato in precedenza al servizio di provisioning. Per questo articolo è possibile scegliere dps tra gli hub collegati in base ai criteri di allocazione predefiniti, distribuzione ponderata uniforme. Impostare come commento l'istruzione seguente nel file :

    individualEnrollment.setIotHubHostName(IOTHUB_HOST_NAME);
    
  9. L'esempio crea, aggiorna, esegue query ed elimina una registrazione di un singolo dispositivo TPM. Per verificare la corretta registrazione nel portale, impostare temporaneamente come commento le righe di codice seguenti alla fine del file:

    // *********************************** Delete info of individualEnrollment ************************************
    System.out.println("\nDelete the individualEnrollment...");
    provisioningServiceClient.deleteIndividualEnrollment(REGISTRATION_ID);
    
  10. Salva le modifiche.

Eseguire l'esempio di registrazione singola

  1. Eseguire l'esempio:

    dotnet run
    
  2. Al termine della creazione, nella finestra di comando vengono visualizzate le proprietà della nuova registrazione.

Per eseguire l'esempio, è necessario il stringa di connessione per il servizio di provisioning copiato nella sezione precedente e la chiave di verifica dell'autenticità per il dispositivo. Se è stata seguita la guida introduttiva Creare ed effettuare il provisioning di un dispositivo simulato per creare un dispositivo TPM simulato, usare la chiave di verifica dell'autenticità creata per tale dispositivo. In caso contrario, per creare una registrazione singola di esempio è possibile usare la chiave di verifica dell'autenticità seguente fornita con Node.js Service SDK:

AToAAQALAAMAsgAgg3GXZ0SEs/gakMyNRqXXJP1S124GUgtk8qHaGzMUaaoABgCAAEMAEAgAAAAAAAEAxsj2gUScTk1UjuioeTlfGYZrrimExB+bScH75adUMRIi2UOMxG1kw4y+9RW/IVoMl4e620VxZad0ARX2gUqVjYO7KPVt3dyKhZS3dkcvfBisBhP1XH9B33VqHG9SHnbnQXdBUaCgKAfxome8UmBKfe+naTsE5fkvjb/do3/dD6l4sGBwFCnKRdln4XpM03zLpoHFao8zOwt8l/uP3qUIxmCYv9A7m69Ms+5/pCkTu/rK4mRDsfhZ0QLfbzVI6zQFOKF/rwsfBtFeWlWtcuJMKlXdD8TXWElTzgh7JS4qhFzreL0c1mI0GCj+Aws0usZh7dLIVPnlgZcBhgy1SSDQMQ==
  1. Per creare un gruppo di registrazioni per il dispositivo TPM eseguire questo comando, includendo le virgolette che racchiudono gli argomenti:

    node create_individual_enrollment.js "<the connection string for your provisioning service>" "<endorsement key>"
    
  2. Al termine della creazione, nella finestra di comando vengono visualizzate le proprietà della nuova registrazione.

  1. Dalla cartella azure-iot-sdk-java\provisioning\provisioning-service-client-samples\service-enrollment-sample nel prompt dei comandi eseguire il comando seguente per compilare l'esempio:

    mvn install -DskipTests
    

    Questo comando scarica il pacchetto Maven del servizio Dps di Azure IoT nel computer e compila l'esempio. Questo pacchetto include i file binari per Java Service SDK.

  2. Passare alla cartella di destinazione ed eseguire l'esempio. La compilazione nel passaggio precedente restituisce .jar file nella cartella di destinazione con il formato di file seguente: service-enrollment-sample-{version}-with-deps.jar; ad esempio: service-enrollment-sample-1.8.1-with-deps.jar. Potrebbe essere necessario sostituire la versione nel comando seguente.

    cd target
    java -jar ./service-enrollment-sample-1.8.1-with-deps.jar
    
  3. Al termine della creazione, nella finestra di comando vengono visualizzate le proprietà della nuova registrazione.

Per verificare che la registrazione singola sia stata creata:

  1. Nella portale di Azure passare all'istanza del servizio Device Provisioning.

  2. Nel menu Impostazioni selezionare Gestisci registrazioni.

  3. Selezionare la scheda Registrazioni singole. Verrà visualizzata una nuova voce di registrazione corrispondente all'ID di registrazione usato nell'esempio.

Screenshot che mostra la verifica della registrazione per un singolo dispositivo C# nel portale.

Screenshot che mostra la verifica della registrazione per un Node.js singolo dispositivo nel portale.

Screenshot che mostra la verifica della registrazione per un singolo dispositivo Java nel portale.

Registrare un dispositivo simulato (facoltativo)

Se sono stati eseguiti i passaggi descritti nella guida introduttiva Creare ed effettuare il provisioning di un dispositivo TPM simulato per effettuare il provisioning di un dispositivo simulato, riprendere l'avvio rapido in Registrare il dispositivo.

Se sono stati eseguiti i passaggi descritti nella guida introduttiva Creare ed effettuare il provisioning di un dispositivo TPM simulato per effettuare il provisioning di un dispositivo simulato, riprendere l'avvio rapido in Registrare il dispositivo.

Se sono stati eseguiti i passaggi descritti nella guida introduttiva Creare ed effettuare il provisioning di un dispositivo TPM simulato per effettuare il provisioning di un dispositivo simulato, riprendere l'avvio rapido in Registrare il dispositivo.

Pulire le risorse

Se si prevede di esplorare le esercitazioni sul servizio Device Provisioning, non pulire le risorse create in questo articolo. In caso contrario, seguire questa procedura per eliminare tutte le risorse create da questo articolo.

  1. Nella portale di Azure passare all'istanza del servizio Device Provisioning.

  2. Nel menu Impostazioni selezionare Gestisci registrazioni.

  3. Selezionare la scheda Registrazioni singole.

  4. Selezionare la casella di controllo accanto all'ID registrazione della voce di registrazione creata in questo articolo.

  5. Nella parte superiore della pagina selezionare Elimina.

  1. Se sono stati eseguiti i passaggi descritti in Creare ed effettuare il provisioning di un dispositivo TPM simulato per creare un dispositivo TPM simulato, seguire questa procedura:

    1. Nel portale di Azure passare all'hub IoT in cui è stato effettuato il provisioning del dispositivo.

    2. Nel menu a sinistra in Gestione dei dispositivi selezionare Dispositivi.

    3. Selezionare la casella di controllo accanto all'ID dispositivo del dispositivo registrato in questo articolo.

    4. Nella parte superiore del riquadro selezionare Elimina.

  1. Se sono stati eseguiti i passaggi descritti in Creare ed effettuare il provisioning di un dispositivo TPM simulato per creare un dispositivo TPM simulato, seguire questa procedura:

    1. Chiudere la finestra del simulatore TPM e la finestra dell'output dell'esempio per il dispositivo simulato.

    2. Nel portale di Azure passare all'hub IoT in cui è stato effettuato il provisioning del dispositivo.

    3. Nel menu a sinistra in Gestione dei dispositivi selezionare Dispositivi.

    4. Selezionare la casella di controllo accanto all'ID dispositivo del dispositivo registrato in questo articolo.

    5. Nella parte superiore del riquadro selezionare Elimina.

  1. Se sono stati eseguiti i passaggi descritti in Creare ed effettuare il provisioning di un dispositivo TPM simulato per creare un dispositivo TPM simulato, seguire questa procedura:

    1. Chiudere la finestra del simulatore TPM e la finestra dell'output dell'esempio per il dispositivo simulato.

    2. Nel portale di Azure passare all'hub IoT in cui è stato effettuato il provisioning del dispositivo.

    3. Nel menu a sinistra in Gestione dei dispositivi selezionare Dispositivi.

    4. Selezionare la casella di controllo accanto all'ID dispositivo del dispositivo registrato in questo articolo.

    5. Nella parte superiore del riquadro selezionare Elimina.

Passaggi successivi

In questo articolo è stata creata una voce di registrazione singola a livello di codice per un dispositivo TPM. Facoltativamente, è stato creato un dispositivo simulato TPM nel computer e ne è stato effettuato il provisioning nell'hub IoT usando il servizio Device Provisioning in hub IoT di Azure. Per altre informazioni, vedere i collegamenti seguenti: