Avvio rapido: Effettuare il provisioning di un dispositivo TPM simulato

In questa guida introduttiva si creerà un dispositivo simulato nel computer Windows. Il dispositivo simulato verrà configurato per l'uso di un meccanismo di attestazione TPM (Trusted Platform Module) per l'autenticazione. Dopo aver configurato il dispositivo, eseguirne il provisioning nell'hub IoT usando il servizio Device Provisioning hub IoT di Azure. Il codice di esempio verrà quindi usato per registrare il dispositivo con un'istanza del servizio Device Provisioning.

Se non si ha familiarità con il processo di provisioning, vedere la panoramica del provisioning . È anche necessario aver completato la procedura descritta in Configurare il servizio Device Provisioning in hub IoT con il portale di Azure prima di continuare.

Il servizio Device Provisioning in Azure IoT supporta due tipi di registrazione:

  • Gruppi di registrazione usati per registrare più dispositivi correlati.

  • Registrazioni singole usate per registrare un singolo dispositivo.

Questo articolo descrive le registrazioni singole.

L'attestazione TPM (Trusted Platform Module) non è supportata in Python SDK. Con Python è possibile effettuare il provisioning di un dispositivo usando chiavi simmetriche o certificati X.509.

Prerequisiti

I prerequisiti seguenti si riferiscono a un ambiente di sviluppo Windows. Per Linux o macOS, vedere la sezione appropriata in Preparare l'ambiente di sviluppo nella documentazione dell'SDK.

  • Modulo di sicurezza hardware TPM 2.0 nel computer basato su Windows.

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

    dotnet --info
    
  • Installare la versione più recente di Git. Assicurarsi che Git venga aggiunto alle variabili di ambiente accessibili alla finestra di comando. Vedere Strumenti client Git di Software Freedom Conservancy per la versione più recente degli strumenti da installare, che include Git Bash, l'app da riga di git comando che è possibile usare per interagire con il repository Git locale.

Preparare l'ambiente di sviluppo

In questa sezione si preparerà un ambiente di sviluppo usato per compilare Azure IoT C SDK e l'esempio di simulatore di dispositivi TPM .

  1. Scaricare il sistema di compilazione CMake più recente.

    Importante

    Verificare che i prerequisiti di Visual Studio (Visual Studio e il carico di lavoro "Sviluppo di applicazioni desktop con C++") siano installati nel computer prima di avviare l'installazione CMake . Quando i prerequisiti sono pronti e il download è stato verificato, installare il sistema di compilazione CMake. Tenere inoltre presente che le versioni precedenti del sistema di compilazione CMake non riescono a generare il file di soluzione usato in questo articolo. Assicurarsi di usare la versione più recente di CMake.

  2. Aprire un Web browser e passare alla pagina Versione di Azure IoT C SDK.

  3. Selezionare la scheda Tag nella parte superiore della pagina.

  4. Copiare il nome del tag per la versione più recente di Azure IoT C SDK.

  5. Aprire un prompt dei comandi o la shell Git Bash. Eseguire i comandi seguenti per clonare la versione più recente del repository GitHub azure IoT Device SDK per C . Sostituire <release-tag> con il tag copiato nel passaggio precedente, ad esempio : lts_01_2023.

    git clone -b <release-tag> https://github.com/Azure/azure-iot-sdk-c.git
    cd azure-iot-sdk-c
    git submodule update --init
    

    Il completamento di questa operazione potrebbe richiedere alcuni minuti.

  6. Al termine dell'operazione, eseguire i comandi seguenti dalla azure-iot-sdk-c directory :

    mkdir cmake
    cd cmake
    
  1. Aprire una shell CMD Git o un ambiente della riga di comando Bash Git.

  2. Clonare il repository GitHub azure IoT SDK per C# usando il comando seguente:

    git clone https://github.com/Azure/azure-iot-sdk-csharp.git
    
  1. Aprire una shell CMD Git o un ambiente della riga di comando Bash Git.

  2. Clonare il repository GitHub azure-utpm-c usando il comando seguente:

    git clone https://github.com/Azure/azure-utpm-c.git --recursive
    
  1. Aprire una shell CMD Git o un ambiente della riga di comando Bash Git.

  2. Clonare il repository GitHub Java usando il comando seguente:

    git clone https://github.com/Azure/azure-iot-sdk-java.git --recursive
    

Compilare ed eseguire il simulatore di dispositivi TPM

In questa sezione verrà compilato ed eseguito il simulatore TPM. Questo simulatore è in ascolto su un socket sulle porte 2321 e 2322. Non chiudere la finestra di comando. Sarà necessario mantenere il simulatore in esecuzione fino alla fine di questo argomento di avvio rapido.

  1. Eseguire il comando seguente per compilare Azure IoT C SDK che include il codice di esempio del simulatore di dispositivi TPM. Viene generata una soluzione di Visual Studio per il dispositivo simulato nella directory cmake. Questo esempio offre un meccanismo di attestazione TPM tramite l'autenticazione di token di firma di accesso condiviso (SAS).

    cmake -Duse_prov_client:BOOL=ON -Duse_tpm_simulator:BOOL=ON ..
    

    Suggerimento

    Se cmake non trova il compilatore C++, potrebbero verificarsi errori di compilazione durante l'esecuzione del comando precedente. In tal caso, provare a eseguire il comando nel prompt dei comandi di Visual Studio.

  2. Quando la compilazione ha esito positivo, le ultime righe di output sono simili all'output seguente:

    $ cmake -Duse_prov_client:BOOL=ON ..
    -- Building for: Visual Studio 16 2019
    -- The C compiler identification is MSVC 19.23.28107.0
    -- The CXX compiler identification is MSVC 19.23.28107.0
    
    ...
    
    -- Configuring done
    -- Generating done
    -- Build files have been written to: C:/code/azure-iot-sdk-c/cmake
    
  3. Passare alla cartella radice del repository Git clonato.

  4. Eseguire il simulatore TPM usando il percorso illustrato di seguito.

    cd ..
    .\provisioning_client\deps\utpm\tools\tpm_simulator\Simulator.exe
    

    Il simulatore non visualizza alcun output. Lasciare che continui a essere eseguito durante la simulazione di un dispositivo TPM.

  1. Passare alla cartella radice di GitHub.

  2. Eseguire il simulatore TPM affinché sia il Modulo di protezione hardware per il dispositivo simulato.

    .\azure-utpm-c\tools\tpm_simulator\Simulator.exe
    
  3. Creare una nuova cartella vuota denominata registerdevice. Nella cartella registerdevice creare un file package.json usando il comando seguente al prompt dei comandi(assicurarsi di rispondere a tutte le domande poste da npm o accettare le impostazioni predefinite se si adattano):

    npm init
    
  4. Installare i pacchetti precursori seguenti:

    npm install node-gyp -g
    npm install ffi-napi -g
    

    Nota

    Sono presenti alcuni problemi noti per l'installazione dei pacchetti indicati in precedenza. Per risolvere questi problemi, eseguire npm install --global --production windows-build-tools usando un prompt dei comandi in modalità Esegui come amministratore, eseguire SET VCTargetsPath=C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140 dopo aver sostituito il percorso con quello della versione installata e quindi eseguire di nuovo i comandi di installazione precedenti.

  5. Installare tutti i pacchetti necessari eseguendo il comando seguente al prompt dei comandi nella cartella registerdevice :

    npm install --save azure-iot-device azure-iot-device-mqtt azure-iot-security-tpm azure-iot-provisioning-device-http azure-iot-provisioning-device
    

    Il comando installa i pacchetti seguenti:

    • Un client di sicurezza che funziona con TPM: azure-iot-security-tpm

    • Trasporto per la connessione del dispositivo al servizio Device Provisioning: azure-iot-provisioning-device-http o azure-iot-provisioning-device-amqp

    • Client per l'uso del client di trasporto e sicurezza: azure-iot-provisioning-device

    • Il client del dispositivo: azure-iot-device

    • Trasporto: uno qualsiasi di azure-iot-device-amqp, azure-iot-device-mqtto azure-iot-device-http

    • Client di sicurezza già installato: azure-iot-security-tpm

      Nota

      Gli esempi in questa guida introduttiva usano i azure-iot-provisioning-device-http trasporti e azure-iot-device-mqtt .

  6. Aprire un editor di testo delle scelte.

  7. Nella cartella registerdevice creare un nuovo file ExtractDevice.js.

  8. Aggiungere le istruzioni require seguenti all'inizio del file ExtractDevice.js:

    
    'use strict';
    
    var tpmSecurity = require('azure-iot-security-tpm');
    var tssJs = require("tss.js");
    
    var myTpm = new tpmSecurity.TpmSecurityClient(undefined, new tssJs.Tpm(true));
    
  9. Aggiungere la funzione seguente per implementare il metodo:

    
    myTpm.getEndorsementKey(function(err, endorsementKey) {
      if (err) {
        console.log('The error returned from get key is: ' + err);
      } else {
        console.log('the endorsement key is: ' + endorsementKey.toString('base64'));
        myTpm.getRegistrationId((getRegistrationIdError, registrationId) => {
          if (getRegistrationIdError) {
            console.log('The error returned from get registration id is: ' + getRegistrationIdError);
          } else {
            console.log('The Registration Id is: ' + registrationId);
            process.exit();
          }
        });
      }
    });
    
  10. Salvare e chiudere il file ExtractDevice.js.

    node ExtractDevice.js
    
  11. Eseguire l'esempio.

  12. Nella finestra di output vengono visualizzati la chiave di verifica dell'autenticità e l'ID registrazione necessari per la registrazione del dispositivo. Copiare questi valori.

  1. Eseguire il simulatore TPM affinché sia il Modulo di protezione hardware per il dispositivo simulato.

  2. Selezionare Consenti accesso. Il simulatore è in ascolto su un socket sulle porte 2321 e 2322. Non chiudere questa finestra di comando; è necessario mantenere il simulatore in esecuzione fino alla fine di questa guida introduttiva.

    .\azure-iot-sdk-java\provisioning\provisioning-tools\tpm-simulator\Simulator.exe
    

    TPM Simulator

  3. Aprire un secondo prompt dei comandi.

  4. Nel secondo prompt dei comandi passare alla cartella radice e compilare le dipendenze di esempio.

    cd azure-iot-sdk-java
    mvn install -DskipTests=true
    
  5. Passare alla cartella dell'esempio.

    cd provisioning/provisioning-samples/provisioning-tpm-sample
    

Leggere le chiavi di crittografia dal dispositivo TPM

In questa sezione verrà compilato ed eseguito un esempio che legge la chiave di verifica dell'autenticità e l'ID di registrazione dal simulatore TPM lasciato in esecuzione e rimane in ascolto sulle porte 2321 e 2322. Questi valori verranno usati per la registrazione del dispositivo nell'istanza del servizio Device Provisioning.

  1. Avviare Visual Studio.

  2. Aprire la soluzione generata nella cartella cmake denominata azure_iot_sdks.sln.

  3. Nel menu di Visual Studio selezionare Compila>Compila soluzione per compilare tutti i progetti nella soluzione.

  4. Nella finestra Esplora soluzioni di Visual Studio passare alla cartella Provision_Tools. Fare clic con il pulsante destro del mouse sul progetto tpm_device_provision e scegliere Imposta come progetto di avvio.

  5. Nel menu di Visual Studio selezionare Debug>Avvia senza eseguire debug per eseguire la soluzione. L'app legge e visualizza un ID registrazione e una Chiave di approvazione. Prendere nota di questi valori o copiarli. Questi verranno usati nella sezione successiva per la registrazione del dispositivo.

  1. Accedere al portale di Azure, selezionare il pulsante Tutte le risorse nel menu a sinistra e aprire il servizio Device Provisioning. Prendere nota dell'ambito ID e dell'endpoint globale del servizio di provisioning.

    Device Provisioning Service information

  2. Modificare src/main/java/samples/com/microsoft/azure/sdk/iot/ProvisioningTpmSample.java per poter includere l'ambito ID e l'endpoint globale del servizio di provisioning annotati prima.

    private static final String idScope = "[Your ID scope here]";
    private static final String globalEndpoint = "[Your Provisioning Service Global Endpoint here]";
    private static final ProvisioningDeviceClientTransportProtocol PROVISIONING_DEVICE_CLIENT_TRANSPORT_PROTOCOL = ProvisioningDeviceClientTransportProtocol.HTTPS;
    
  3. Salvare il file.

  4. Usare i comandi seguenti per compilare il progetto, passare alla cartella di destinazione ed eseguire il file di .jar creato (sostituire {version}con la versione di Java):

    mvn clean install
    cd target
    java -jar ./provisioning-tpm-sample-{version}-with-deps.jar
    
  5. Quando il programma inizia l'esecuzione, visualizzerà la chiave di verifica dell'autenticità e l'ID registrazione. Copiare questi valori per la sezione successiva. Assicurarsi di lasciare in esecuzione il programma.

In questa sezione verrà compilato ed eseguito un esempio che legge la chiave di verifica dell'autenticità dal modulo di sicurezza hardware TPM 2.0. Questo valore verrà usato per la registrazione del dispositivo con l'istanza del servizio Device Provisioning.

  1. In un prompt dei comandi sostituire le directory con la directory del progetto per l'esempio di provisioning del dispositivo TPM.

    cd '.\azure-iot-sdk-csharp\provisioning\device\samples\how to guides\TpmSample\'
    
  2. Digitare il comando seguente per compilare ed eseguire l'esempio di provisioning di dispositivo TPM. Copiare la chiave di verifica dell'autenticità restituita dal modulo di sicurezza hardware TPM 2.0 da usare in un secondo momento durante la registrazione del dispositivo.

    dotnet run -- -e
    

Creare una voce per la registrazione dei dispositivi

  1. Accedere al portale di Azure e aprire l'istanza del servizio Device Provisioning.

  2. Selezionare Gestisci registrazioni nella sezione Impostazioni del menu di spostamento.

  3. Selezionare la scheda Registrazioni singole, quindi selezionare Aggiungi registrazione singola.

    Screenshot that shows the add individual enrollment option.

  4. Nella pagina Registrazione e provisioning della pagina Aggiungi registrazione specificare le informazioni seguenti per configurare i dettagli della registrazione:

    Campo Descrizione
    Attestazione Selezionare Trusted Platform Module (TPM) come meccanismo di attestazione.
    Impostazioni TPM (Trusted Platform Module) Fornire la chiave di verifica dell'autenticità che verrà usata per verificare il dispositivo per la registrazione. È possibile recuperare la chiave di verifica dell'autenticità dal TPM del dispositivo.
    ID registrazione Specificare l'ID di registrazione univoco per il dispositivo. È possibile recuperare l'ID di registrazione dal TPM del dispositivo.
    Stato del provisioning Selezionare la casella Abilita questa registrazione se si vuole che la registrazione sia disponibile per effettuare il provisioning del dispositivo. Deselezionare questa casella se si vuole disabilitare la registrazione. È possibile modificare questa impostazione in un secondo momento.
    Criteri di reprovisioning Scegliere un criterio di reprovisioning che rifletta il modo in cui si vuole che il servizio Device Provisioning gestisca i dispositivi che richiedono il provisioning. Per altre informazioni, vedere Criteri di reprovisioning.
  5. Selezionare Avanti: Hub IoT.

  6. Nella scheda Hub IoT della pagina Aggiungi registrazione specificare le informazioni seguenti per determinare gli hub IoT a cui la registrazione può effettuare il provisioning dei dispositivi:

    Campo Descrizione
    Hub IoT di destinazione Selezionare uno o più hub IoT collegati oppure aggiungere un nuovo collegamento a un hub IoT. Per altre informazioni sul collegamento degli hub IoT all'istanza del servizio Device Provisioning, vedere Come collegare e gestire hub IoT.
    Criteri di allocazione Se sono stati selezionati più hub IoT collegati, selezionare la modalità di assegnazione dei dispositivi ai diversi hub. Per altre informazioni sui criteri di allocazione, vedere Come usare i criteri di allocazione.

    Se è stato selezionato un solo hub IoT collegato, è consigliabile usare i criteri di distribuzione ponderati in modo uniforme.
  7. Selezionare Avanti: Impostazioni dispositivo

  8. Nella scheda Impostazioni dispositivo della pagina Aggiungi registrazione specificare le informazioni seguenti per definire la modalità di configurazione dei dispositivi di cui è stato appena effettuato il provisioning:

    Campo Descrizione
    ID dispositivo Specificare un ID dispositivo che verrà assegnato al dispositivo di cui è stato effettuato il provisioning in hub IoT. Se non si specifica un ID dispositivo, verrà usato l'ID di registrazione.
    IoT Edge Selezionare Abilita IoT Edge nei dispositivi di cui è stato effettuato il provisioning se il dispositivo di cui è stato effettuato il provisioning eseguirà Azure IoT Edge. Deselezionare questa casella se questa registrazione è per un dispositivo non abilitato per IoT Edge.
    Tag del dispositivo Usare questa casella di testo per specificare i tag da applicare al dispositivo gemello del dispositivo di cui è stato effettuato il provisioning.
    Proprietà desiderate Usare questa casella di testo per specificare le proprietà desiderate che si desidera applicare al dispositivo gemello del dispositivo di cui è stato effettuato il provisioning.

    Per altre informazioni, vedere Comprendere e usare dispositivi gemelli nell'hub IoT.

  9. Selezionare Avanti: Rivedi e crea.

  10. Nella scheda Rivedi e crea verificare tutti i valori e quindi selezionare Crea.

L'esempio TPM C# per questa guida introduttiva non fornisce un ID di registrazione. Quando viene richiesto di aggiungerne uno per la registrazione singola, specificare il proprio valore.

  1. Accedere al portale di Azure e aprire l'istanza del servizio Device Provisioning.

  2. Selezionare Gestisci registrazioni nella sezione Impostazioni del menu di spostamento.

  3. Selezionare la scheda Registrazioni singole, quindi selezionare Aggiungi registrazione singola.

    Screenshot that shows the add individual enrollment option.

  4. Nella pagina Registrazione e provisioning della pagina Aggiungi registrazione specificare le informazioni seguenti per configurare i dettagli della registrazione:

    Campo Descrizione
    Attestazione Selezionare Trusted Platform Module (TPM) come meccanismo di attestazione.
    Impostazioni TPM (Trusted Platform Module) Fornire la chiave di verifica dell'autenticità che verrà usata per verificare il dispositivo per la registrazione. È possibile recuperare la chiave di verifica dell'autenticità dal TPM del dispositivo.
    ID registrazione Specificare l'ID di registrazione univoco per il dispositivo. È possibile recuperare l'ID di registrazione dal TPM del dispositivo.
    Stato del provisioning Selezionare la casella Abilita questa registrazione se si vuole che la registrazione sia disponibile per effettuare il provisioning del dispositivo. Deselezionare questa casella se si vuole disabilitare la registrazione. È possibile modificare questa impostazione in un secondo momento.
    Criteri di reprovisioning Scegliere un criterio di reprovisioning che rifletta il modo in cui si vuole che il servizio Device Provisioning gestisca i dispositivi che richiedono il provisioning. Per altre informazioni, vedere Criteri di reprovisioning.
  5. Selezionare Avanti: Hub IoT.

  6. Nella scheda Hub IoT della pagina Aggiungi registrazione specificare le informazioni seguenti per determinare gli hub IoT a cui la registrazione può effettuare il provisioning dei dispositivi:

    Campo Descrizione
    Hub IoT di destinazione Selezionare uno o più hub IoT collegati oppure aggiungere un nuovo collegamento a un hub IoT. Per altre informazioni sul collegamento degli hub IoT all'istanza del servizio Device Provisioning, vedere Come collegare e gestire hub IoT.
    Criteri di allocazione Se sono stati selezionati più hub IoT collegati, selezionare la modalità di assegnazione dei dispositivi ai diversi hub. Per altre informazioni sui criteri di allocazione, vedere Come usare i criteri di allocazione.

    Se è stato selezionato un solo hub IoT collegato, è consigliabile usare i criteri di distribuzione ponderati in modo uniforme.
  7. Selezionare Avanti: Impostazioni dispositivo

  8. Nella scheda Impostazioni dispositivo della pagina Aggiungi registrazione specificare le informazioni seguenti per definire la modalità di configurazione dei dispositivi di cui è stato appena effettuato il provisioning:

    Campo Descrizione
    ID dispositivo Specificare un ID dispositivo che verrà assegnato al dispositivo di cui è stato effettuato il provisioning in hub IoT. Se non si specifica un ID dispositivo, verrà usato l'ID di registrazione.
    IoT Edge Selezionare Abilita IoT Edge nei dispositivi di cui è stato effettuato il provisioning se il dispositivo di cui è stato effettuato il provisioning eseguirà Azure IoT Edge. Deselezionare questa casella se questa registrazione è per un dispositivo non abilitato per IoT Edge.
    Tag del dispositivo Usare questa casella di testo per specificare i tag da applicare al dispositivo gemello del dispositivo di cui è stato effettuato il provisioning.
    Proprietà desiderate Usare questa casella di testo per specificare le proprietà desiderate che si desidera applicare al dispositivo gemello del dispositivo di cui è stato effettuato il provisioning.

    Per altre informazioni, vedere Comprendere e usare dispositivi gemelli nell'hub IoT.

  9. Selezionare Avanti: Rivedi e crea.

  10. Nella scheda Rivedi e crea verificare tutti i valori e quindi selezionare Crea.

Registrare il dispositivo

In questa sezione si configurerà il codice di esempio per l'uso del protocollo AMQP (Advanced Message Queuing Protocol) per inviare la sequenza di avvio del dispositivo all'istanza del servizio Device Provisioning. Questa sequenza di avvio fa sì che il dispositivo venga registrato in un hub IoT collegato all'istanza del servizio Device Provisioning.

  1. Nella portale di Azure selezionare la scheda Panoramica per il servizio Device Provisioning.

  2. Copiare il valore ambito ID.

    Extract Device Provisioning Service endpoint information from the portal

  3. Nella finestra Esplora soluzioni di Visual Studio passare alla cartella Provision_Samples. Espandere il progetto di esempio denominato prov_dev_client_sample. Espandere File di origine e aprire prov_dev_client_sample.c.

  4. Nella parte superiore del file trovare le istruzioni #define per ogni protocollo di dispositivo come illustrato di seguito. Assicurarsi che solo SAMPLE_AMQP sia senza commento.

    Attualmente, il protocollo MQTT non è supportato per la registrazione singola TPM.

    //
    // The protocol you wish to use should be uncommented
    //
    //#define SAMPLE_MQTT
    //#define SAMPLE_MQTT_OVER_WEBSOCKETS
    #define SAMPLE_AMQP
    //#define SAMPLE_AMQP_OVER_WEBSOCKETS
    //#define SAMPLE_HTTP
    
  5. Trovare la costante id_scope e sostituire il valore con il valore Ambito ID copiato in precedenza.

    static const char* id_scope = "0ne00002193";
    
  6. Trovare la definizione per la funzione main() nello stesso file. Assicurarsi che la variabile hsm_type sia impostata su SECURE_DEVICE_TYPE_TPM come illustrato di seguito.

    SECURE_DEVICE_TYPE hsm_type;
    hsm_type = SECURE_DEVICE_TYPE_TPM;
    //hsm_type = SECURE_DEVICE_TYPE_X509;
    //hsm_type = SECURE_DEVICE_TYPE_SYMMETRIC_KEY;
    
  7. Fare clic con il pulsante destro del mouse sul progetto prov_dev_client_sample e scegliere Imposta come progetto di avvio.

  8. Nel menu di Visual Studio selezionare Debug>Avvia senza eseguire debug per eseguire la soluzione. Nella richiesta di ricompilare il progetto fare clic su per ricompilare il progetto prima dell'esecuzione.

    L'output seguente è un esempio dell'avvio corretto del client del dispositivo di provisioning di esempio, che si connette all'istanza del servizio Device Provisioning per ottenere informazioni sull'hub IoT ed effettuare la registrazione:

    Provisioning API Version: 1.2.7
    
    Registering... Press enter key to interrupt.
    
    Provisioning Status: PROV_DEVICE_REG_STATUS_CONNECTED
    Provisioning Status: PROV_DEVICE_REG_STATUS_ASSIGNING
    Provisioning Status: PROV_DEVICE_REG_STATUS_ASSIGNING
    
    Registration Information received from service:
    test-docs-hub.azure-devices.net, deviceId: test-docs-cert-device
    
  1. Nella portale di Azure selezionare la scheda Panoramica per il servizio Device Provisioning.

  2. Copiare il valore ambito ID.

    Copy provisioning service Scope ID from the portal blade

  3. In un prompt dei comandi sostituire le directory con la directory del progetto per l'esempio di provisioning del dispositivo TPM.

     cd '.\azure-iot-sdk-csharp\provisioning\device\samples\how to guides\TpmSample\'
    
  4. Eseguire il comando seguente per registrare il dispositivo. Sostituire <IdScope> con il valore del servizio Device Provisioning copiato e <RegistrationId> con il valore usato durante la creazione della registrazione del dispositivo.

    dotnet run -- -s <IdScope> -r <RegistrationId>
    

    Se la registrazione del dispositivo ha avuto esito positivo, verranno visualizzati i messaggi seguenti:

    Initializing security using the local TPM...
    Initializing the device provisioning client...
    Initialized for registration Id <RegistrationId>.
    Registering with the device provisioning service...
    Registration status: Assigned.
    Device <RegistrationId> registered to <HubName>.azure-devices.net.
    Creating TPM authentication for IoT Hub...
    Testing the provisioned device with IoT Hub...
    Sending a telemetry message...
    Finished.
    
  1. Nella portale di Azure selezionare la scheda Panoramica per il servizio Device Provisioning.

  2. Copiare il valore ambito ID.

    Extract Device Provisioning Service endpoint information from the portal blade

  3. Aprire un editor di testo di propria scelta.

  4. Nella cartella registerdevice creare un nuovo file RegisterDevice.js.

  5. Aggiungere le istruzioni require seguenti all'inizio del file RegisterDevice.js:

    
    'use strict';
    
    var ProvisioningTransport = require('azure-iot-provisioning-device-http').Http;
    var iotHubTransport = require('azure-iot-device-mqtt').Mqtt;
    var Client = require('azure-iot-device').Client;
    var Message = require('azure-iot-device').Message;
    var tpmSecurity = require('azure-iot-security-tpm');
    var ProvisioningDeviceClient = require('azure-iot-provisioning-device').ProvisioningDeviceClient;
    

    Nota

    Azure IoT SDK per Node.js supporta altri protocolli come AMQP, AMQP WS e MQTT WS. Per altri esempi vedere Esempi di Device Provisioning Service SDK per Node.js.

  6. Aggiungere le variabili globalDeviceEndpoint e idScope e usarle per creare un'istanza di ProvisioningDeviceClient. Sostituire {globalDeviceEndpoint} e {idScope} con i valori di endpoint dispositivo globale e ID ambito del passaggio 1:

    
    var provisioningHost = '{globalDeviceEndpoint}';
    var idScope = '{idScope}';
    
    var tssJs = require("tss.js");
    var securityClient = new tpmSecurity.TpmSecurityClient('', new tssJs.Tpm(true));
    // if using non-simulated device, replace the above line with following:
    //var securityClient = new tpmSecurity.TpmSecurityClient();
    
    var provisioningClient = ProvisioningDeviceClient.create(provisioningHost, idScope, new ProvisioningTransport(), securityClient);
    
  7. Aggiungere la funzione seguente per implementare il metodo nel dispositivo:

    
    provisioningClient.register(function(err, result) {
      if (err) {
        console.log("error registering device: " + err);
      } else {
        console.log('registration succeeded');
        console.log('assigned hub=' + result.registrationState.assignedHub);
        console.log('deviceId=' + result.registrationState.deviceId);
        var tpmAuthenticationProvider = tpmSecurity.TpmAuthenticationProvider.fromTpmSecurityClient(result.registrationState.deviceId, result.registrationState.assignedHub, securityClient);
        var hubClient = Client.fromAuthenticationProvider(tpmAuthenticationProvider, iotHubTransport);
    
        var connectCallback = function (err) {
          if (err) {
            console.error('Could not connect: ' + err.message);
          } else {
            console.log('Client connected');
            var message = new Message('Hello world');
            hubClient.sendEvent(message, printResultFor('send'));
          }
        };
    
        hubClient.open(connectCallback);
    
        function printResultFor(op) {
          return function printResult(err, res) {
            if (err) console.log(op + ' error: ' + err.toString());
            if (res) console.log(op + ' status: ' + res.constructor.name);
            process.exit(1);
          };
        }
      }
    });
    
  8. Salvare e chiudere il file RegisterDevice.js.

  9. Esegui questo comando:

    node RegisterDevice.js
    
  10. Si notino i messaggi che simulano l'avvio e la connessione del dispositivo al servizio Device Provisioning per ottenere le informazioni dell'hub IoT.

  1. Nella finestra di comando che esegue il codice di esempio Java nel computer premere INVIO per continuare a eseguire l'applicazione. Si notino i messaggi che simulano l'avvio e la connessione del dispositivo al servizio Device Provisioning per ottenere le informazioni dell'hub IoT.

    Java TPM device program final

Confermare la registrazione del provisioning dei dispositivi

  1. Accedere al portale di Azure.

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

  3. Selezionare l'hub IoT a cui è stato assegnato il dispositivo.

  4. Nel menu Explorer selezionare Dispositivi IoT.

  1. Se il provisioning del dispositivo è stato eseguito correttamente, l'ID dispositivo dovrebbe essere visualizzato nell'elenco, con Stato impostato come abilitato. Se il dispositivo non è visualizzato, selezionare Aggiorna nella parte superiore della pagina.

    Device is registered with the IoT hub for C

  1. Se il provisioning del dispositivo è stato eseguito correttamente, l'ID dispositivo dovrebbe essere visualizzato nell'elenco, con Stato impostato come abilitato. Se il dispositivo non è visualizzato, selezionare Aggiorna nella parte superiore della pagina.

    Device is registered with the IoT hub for C#

  1. Se il provisioning del dispositivo è stato eseguito correttamente, l'ID dispositivo dovrebbe essere visualizzato nell'elenco, con Stato impostato come abilitato. Se il dispositivo non è visualizzato, selezionare Aggiorna nella parte superiore della pagina.

    Device is registered with the IoT hub for Node.js

  1. Se il provisioning del dispositivo è stato eseguito correttamente, l'ID dispositivo dovrebbe essere visualizzato nell'elenco, con Stato impostato come abilitato. Se il dispositivo non è visualizzato, selezionare Aggiorna nella parte superiore della pagina.

    Device is registered with the IoT hub

Nota

Se si è modificato lo stato iniziale del dispositivo gemello rispetto al valore predefinito della voce di registrazione del dispositivo, è possibile eseguire il pull dello stato del dispositivo desiderato dall'hub e agire di conseguenza. Per altre informazioni, vedere Comprendere e usare dispositivi gemelli nell'hub IoT.

Pulire le risorse

Se si prevede di continuare a lavorare ed esplorare l'esempio client del dispositivo, non pulire le risorse create in questa guida introduttiva. Se non si prevede di continuare, seguire questa procedura per eliminare tutte le risorse create da questa guida introduttiva.

Eliminare la registrazione del dispositivo

  1. Chiudere la finestra di output di esempio di client del dispositivo sul computer.

  2. Nel menu a sinistra nella portale di Azure selezionare Tutte le risorse.

  3. Selezionare il servizio Device Provisioning.

  4. Nel menu Impostazioni selezionare Gestisci registrazioni.

  5. Selezionare la scheda Registrazioni singole.

  6. Selezionare la casella di controllo accanto all'ID di registrazione del dispositivo registrato in questa guida introduttiva.

  7. Nella parte superiore della pagina selezionare Elimina.

Eliminare la registrazione del dispositivo da hub IoT

  1. Nel menu a sinistra nella portale di Azure selezionare Tutte le risorse.

  2. Selezionare l'hub IoT.

  3. Nel menu Explorer selezionare Dispositivi IoT.

  4. Selezionare la casella di controllo accanto all'ID dispositivo del dispositivo registrato in questa guida introduttiva.

  5. Nella parte superiore della pagina selezionare Elimina.

Passaggi successivi

In questa guida introduttiva è stato effettuato il provisioning di un singolo dispositivo nell'hub IoT usando una registrazione singola. Successivamente, informazioni su come effettuare il provisioning di più dispositivi tra più hub.