Inicio rápido: Aprovisionamiento de un dispositivo de TPM simulado

En este inicio rápido creará un dispositivo simulado en una máquina Windows. El dispositivo simulado se configurará para usar un mecanismo de atestación de Módulo de plataforma segura (TPM) para la autenticación. Después de configurar el dispositivo, lo aprovisionará en un centro de IoT mediante Azure IoT Hub Device Provisioning Service. Luego, usará código de ejemplo para inscribir el dispositivo con una instancia de Device Provisioning Service.

Si no conoce el proceso de aprovisionamiento, consulte la información general sobre el aprovisionamiento. Asegúrese de completar los pasos descritos en Configuración del servicio Azure IoT Hub Device Provisioning con Azure Portal antes de continuar.

Azure IoT Hub Device Provisioning Service admite dos tipos de inscripciones:

En este artículo se muestran las inscripciones individuales.

La atestación del módulo de plataforma segura (TPM) no se admite en el SDK de Python. Con Python, puede aprovisionar un dispositivo mediante claves simétricas o certificados X.509.

Prerrequisitos

Los siguientes requisitos previos corresponden a un entorno de desarrollo de Windows. En el caso de Linux o macOS, consulte la sección correspondiente en Preparación del entorno de desarrollo en la documentación del SDK.

  • Un módulo de seguridad de hardware TPM 2.0 en la máquina con Windows.

  • Instale el SDK de .NET Core 6.0, o cualquier versión posterior, en una máquina con Windows. Para comprobar la versión, use el siguiente comando.

    dotnet --info
    
  • Instale la última versión de Git. Asegúrese de que Git se ha agregado a las variables de entorno accesibles desde la ventana de comandos. Consulte las herramientas de cliente de Git de Software Freedom Conservancy para instalar la versión más reciente de las herramientas git, lo que incluye Git Bash, la aplicación de línea de comandos que puede usar para interactuar con su repositorio de Git local.

Preparación del entorno de desarrollo

En esta sección, preparará un entorno de desarrollo para compilar el SDK de Azure IoT para C y el simulador de dispositivos de TPM de ejemplo.

  1. Descargue el último sistema de compilación CMake.

    Importante

    Confirme que los requisitos previos de Visual Studio (Visual Studio y la carga de trabajo "Desarrollo para el escritorio con C++") estén instalados en la máquina antes de empezar la instalación de CMake. Una vez que los requisitos previos están en su lugar, y se ha comprobado la descarga, instale el sistema de compilación de CMake. Igualmente, tenga en cuenta que las versiones anteriores del sistema de compilación CMake no generan el archivo de solución que se usa en este artículo. Asegúrese de usar la versión más reciente de CMake.

  2. Abra un explorador web y vaya a la página de la versión del SDK de Azure IoT para C.

  3. Seleccione la pestaña Etiquetas en la parte superior de la página.

  4. Copie el nombre de etiqueta de la versión más reciente del SDK de Azure IoT para C.

  5. Abra un símbolo del sistema o el shell de Bash de Git. Ejecute los siguientes comandos para clonar la versión más reciente del repositorio de GitHub del SDK de dispositivo loT de Azure para C. Reemplace <release-tag> con el nombre de la etiqueta que copió en el paso anterior, por ejemplo: 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
    

    Esta operación puede tardar varios minutos en completarse.

  6. Una vez completada la operación, ejecute los siguientes comandos desde el directorio azure-iot-sdk-c:

    mkdir cmake
    cd cmake
    
  1. Abra un entorno de línea de comandos de Git CMD o Git Bash.

  2. Use el comando siguiente para clonar el repositorio de GitHub SDK de Azure IoT para C#:

    git clone https://github.com/Azure/azure-iot-sdk-csharp.git
    
  1. Abra un entorno de línea de comandos de Git CMD o Git Bash.

  2. Clone el repositorio de GitHub azure-utpm-c con el siguiente comando:

    git clone https://github.com/Azure/azure-utpm-c.git --recursive
    
  1. Abra un entorno de línea de comandos de Git CMD o Git Bash.

  2. Clone el repositorio de GitHub Java con el siguiente comando:

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

Compilación y ejecución del simulador de dispositivos de TPM

En esta sección, compilará y ejecutará el simulador de TPM. Este simulador escucha a través de un socket en los puertos 2321 y 2322. No cierre la ventana de comandos. Debe mantener este simulador ejecutándose hasta el final de esta guía de inicio rápido.

  1. Ejecute el siguiente comando para compilar el SDK de Azure IoT para C que incluye el código de ejemplo del simulador de dispositivos TPM. Se genera una solución de Visual Studio para el dispositivo simulado en el directorio cmake. Este ejemplo proporciona un mecanismo de atestación de TPM mediante la autenticación del token de firma de acceso compartido (SAS).

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

    Sugerencia

    Si cmake no encuentra el compilador de C++, es posible que obtenga errores de compilación durante la ejecución del comando anterior. Si eso sucede, pruebe a ejecutar este comando en el símbolo del sistema de Visual Studio.

  2. Una vez realizada la compilación, las últimas líneas de salida son similares a las siguientes:

    $ 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. Vaya a la carpeta raíz del repositorio Git clonado.

  4. Ejecute el simulador de TPM mediante la ruta de acceso que se muestra a continuación.

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

    El simulador no muestra ningún resultado. Deje que continúe ejecutándose mientras simula un dispositivo TPM.

  1. Vaya a la carpeta raíz de GitHub.

  2. Ejecute el simulador de TPM para que sea el HSM para el dispositivo simulado.

    .\azure-utpm-c\tools\tpm_simulator\Simulator.exe
    
  3. Cree una nueva carpeta vacía denominada registerdevice. En la carpeta registerdevice, cree un archivo package.json mediante el siguiente comando en el símbolo del sistema (asegúrese de responder todas las preguntas de npm o acepte los valores predeterminados si le van bien):

    npm init
    
  4. Instale los siguientes paquetes precursores:

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

    Nota

    Hay algunos problemas conocidos al instalar los paquetes anteriores. Para resolver estos problemas, ejecute npm install --global --production windows-build-tools desde un símbolo del sistema en modo Ejecutar como administrador, ejecute SET VCTargetsPath=C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140 después de reemplazar la ruta de acceso por la versión instalada y, luego, vuelva a ejecutar los comandos de la instalación anterior.

  5. Instale todos los paquetes necesarios ejecutando el siguiente comando en el símbolo del sistema en la carpeta registerdevice:

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

    El comando instala los siguientes paquetes:

    • Un cliente de seguridad que funciona con TPM: azure-iot-security-tpm.

    • Un transporte para que el dispositivo se conecte al servicio Device Provisioning: azure-iot-provisioning-device-http o azure-iot-provisioning-device-amqp.

    • Un cliente que use el transporte y el cliente de seguridad: azure-iot-provisioning-device.

    • El cliente de dispositivo: azure-iot-device.

    • Un transporte: azure-iot-device-amqp, azure-iot-device-mqtt o azure-iot-device-http.

    • El cliente de seguridad que ya ha instalado: azure-iot-security-tpm.

      Nota

      Los ejemplos de esta guía de inicio rápido utilizan los transportes azure-iot-provisioning-device-http y azure-iot-device-mqtt.

  6. Abra el editor de texto que prefiera.

  7. En la carpeta registerdevice, cree un nuevo archivo ExtractDevice.js.

  8. Agregue las siguientes instrucciones require al principio del archivo 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. Agregue la siguiente función para implementar el método:

    
    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. Guarde y cierre el archivo ExtractDevice.js.

    node ExtractDevice.js
    
  11. Ejecute el ejemplo.

  12. La ventana de salida muestra los valores de Clave de aprobación e Id. de registro necesarios para la inscripción del dispositivo. Copie estos valores.

  1. Ejecute el simulador de TPM para que sea el HSM para el dispositivo simulado.

  2. Seleccione Permitir acceso. Este simulador escucha a través de un socket en los puertos 2321 y 2322. No cierre esta ventana de comandos; el simulador debe seguir en funcionamiento hasta el final de la guía.

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

    TPM Simulator

  3. Abra un segundo símbolo del sistema.

  4. En el segundo símbolo del sistema, vaya a la carpeta raíz y compile las dependencias de ejemplo.

    cd azure-iot-sdk-java
    mvn install -DskipTests=true
    
  5. Navegue hasta la carpeta de ejemplos.

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

Lectura de las claves criptográficas desde el dispositivo de TPM

En esta sección, compilará y ejecutará un ejemplo que leerá la clave de aprobación y el id. de registro del simulador de TPM que dejó ejecutándose y que aún está escuchando a través de los puertos 2321 y 2322. Estos valores se usarán para la inscripción de dispositivos en la instancia del servicio Device Provisioning.

  1. Inicie Visual Studio.

  2. Abra la solución que creó en la carpeta cmake denominada azure_iot_sdks.sln.

  3. En el menú de Visual Studio, seleccione Compilar>Compilar solución para compilar todos los proyectos de la solución.

  4. En el Explorador de soluciones de Visual Studio, vaya a la carpeta Provision_Tools. Haga clic con el botón derecho en el proyecto tpm_device_provision y seleccione Establecer como proyecto de inicio.

  5. En el menú de Visual Studio, seleccione Depurar>Iniciar sin depurar para ejecutar la solución. La aplicación lee y muestra un identificador de registro y una clave de aprobación. Anote o copie estos valores. Los usará en la sección siguiente para la inscripción del dispositivo.

  1. Inicie sesión en Azure Portal, seleccione el botón Todos los recursos en el menú de la izquierda y abra la instancia de Device Provisioning Service. Anote los valores de Ámbito de id. y Provisioning Service Global Endpoint (Punto de conexión global del servicio de aprovisionamiento).

    Device Provisioning Service information

  2. Edite el archivo src/main/java/samples/com/microsoft/azure/sdk/iot/ProvisioningTpmSample.java para que incluya el Ámbito de id. y el Provisioning Service Global Endpoint (Punto de conexión global del Servicio de aprovisionamiento) tal y como se indicó antes.

    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. Guarde el archivo.

  4. Use los siguientes comandos para compilar el proyecto, vaya a la carpeta de destino y ejecute el archivo .jar que creó (reemplace {version} con su versión de Java):

    mvn clean install
    cd target
    java -jar ./provisioning-tpm-sample-{version}-with-deps.jar
    
  5. Cuando el programa comience a ejecutarse, mostrará la Clave de aprobación y el Id. de registro. Copie estos valores para la sección siguiente. Asegúrese de dejar el programa en ejecución.

En esta sección, compilará y ejecutará un ejemplo que lee la clave de aprobación del módulo de seguridad de hardware TPM 2.0. Este valor se usará para la inscripción de dispositivos en la instancia de Device Provisioning Service.

  1. En un símbolo del sistema, cambie los directorios al directorio del proyecto del ejemplo de aprovisionamiento de dispositivo de TPM.

    cd '.\azure-iot-sdk-csharp\provisioning\device\samples\how to guides\TpmSample\'
    
  2. Escriba el siguiente comando para compilar y ejecutar el ejemplo de aprovisionamiento de dispositivo de TPM. Copie la clave de aprobación devuelta desde el módulo de seguridad de hardware TPM 2.0 para usarla más adelante al inscribir el dispositivo.

    dotnet run -- -e
    

Creación de una entrada de inscripción de dispositivo

  1. Inicie sesión en Azure Portal y vaya a la instancia de Device Provisioning Service.

  2. Seleccione Administrar inscripciones de la sección Configuración del menú de navegación.

  3. Seleccione la pestaña Inscripciones individuales y, después, Agregar inscripción individual.

    Screenshot that shows the add individual enrollment option.

  4. En Registro y aprovisionamiento de la página Agregar inscripción, proporcione la siguiente información para configurar los detalles de inscripción:

    Campo Descripción
    Atestación Seleccione Módulo de plataforma segura (TPM) como mecanismo de atestación.
    Configuración de Módulo de plataforma segura (TPM) Proporcione la clave de aprobación que se usará para comprobar el dispositivo de esta inscripción. Es posible recuperar la clave de aprobación del TPM del dispositivo.
    Identificador de registro Proporcione el identificador de registro único del dispositivo. Es posible recuperar el identificador de registro del TPM del dispositivo.
    Estado de aprovisionamiento Active la casilla Habilitar esta inscripción si desea que esta inscripción esté disponible para aprovisionar su dispositivo. Desactive esta casilla si desea que la inscripción esté deshabilitada. Podrá cambiar esta configuración más adelante.
    Directiva de reaprovisionamiento Elija una directiva de reaprovisionamiento que refleje cómo desea que DPS controle los dispositivos que soliciten el reaprovisionamiento. Para obtener más información, consulte Directivas de reaprovisionamiento.
  5. Seleccione Siguiente: centros de IoT.

  6. En la pestaña Centros de IoT de la página Agregar inscripción, proporcione la siguiente información para determinar qué centros de IoT pueden aprovisionar dispositivos de inscripción para:

    Campo Descripción
    Centros de IoT de destino Seleccione uno o varios de los centros de IoT vinculados o agregue un nuevo vínculo a un centro de IoT. Para más información sobre cómo vincular centros de IoT a la instancia de DPS, consulte Vinculación y administración de centros de IoT.
    Directiva de asignación Si seleccionó más de un centro de IoT vinculado, seleccione cómo quiere asignar dispositivos a los distintos centros. Para más información sobre las directivas de asignación, consulte Uso de directivas de asignación.

    Si seleccionó solo un centro de IoT vinculado, se recomienda usar la directiva Distribución uniformemente ponderada.
  7. Seleccione Siguiente: configuración del dispositivo

  8. En la pestaña Configuración del dispositivo de la página Agregar inscripción, proporcione la siguiente información para definir cómo se configurarán los dispositivos recién aprovisionados:

    Campo Descripción
    Id. de dispositivo Proporcione un id. de dispositivo que se asignará al dispositivo aprovisionado en IoT Hub. Si no proporciona un id. de dispositivo, se usará el id. de registro.
    IoT Edge Compruebe la opción Habilitar IoT Edge en los dispositivos aprovisionados si el dispositivo aprovisionado ejecutará Azure IoT Edge. Desactive esta casilla si esta inscripción es para un dispositivo no habilitado para IoT Edge.
    Etiquetas de dispositivo Use este cuadro de texto para proporcionar las etiquetas que quiera aplicar al dispositivo gemelo del dispositivo aprovisionado.
    Propiedades deseadas Use este cuadro de texto para proporcionar las propiedades deseadas que quiera aplicar al dispositivo gemelo del dispositivo aprovisionado.

    Para más información, consulte Información y uso de dispositivos gemelos en IoT Hub.

  9. Seleccione Siguiente: Review + create (Revisar y crear).

  10. En la pestaña Revisar y crear, compruebe todos los valores y seleccione Crear.

El ejemplo de TPM de C# para esta guía de inicio rápido no proporciona un identificador de registro. Cuando se le pida que agregue uno para la inscripción individual, proporcione su propio valor.

  1. Inicie sesión en Azure Portal y vaya a la instancia de Device Provisioning Service.

  2. Seleccione Administrar inscripciones de la sección Configuración del menú de navegación.

  3. Seleccione la pestaña Inscripciones individuales y, después, Agregar inscripción individual.

    Screenshot that shows the add individual enrollment option.

  4. En Registro y aprovisionamiento de la página Agregar inscripción, proporcione la siguiente información para configurar los detalles de inscripción:

    Campo Descripción
    Atestación Seleccione Módulo de plataforma segura (TPM) como mecanismo de atestación.
    Configuración de Módulo de plataforma segura (TPM) Proporcione la clave de aprobación que se usará para comprobar el dispositivo de esta inscripción. Es posible recuperar la clave de aprobación del TPM del dispositivo.
    Identificador de registro Proporcione el identificador de registro único del dispositivo. Es posible recuperar el identificador de registro del TPM del dispositivo.
    Estado de aprovisionamiento Active la casilla Habilitar esta inscripción si desea que esta inscripción esté disponible para aprovisionar su dispositivo. Desactive esta casilla si desea que la inscripción esté deshabilitada. Podrá cambiar esta configuración más adelante.
    Directiva de reaprovisionamiento Elija una directiva de reaprovisionamiento que refleje cómo desea que DPS controle los dispositivos que soliciten el reaprovisionamiento. Para obtener más información, consulte Directivas de reaprovisionamiento.
  5. Seleccione Siguiente: centros de IoT.

  6. En la pestaña Centros de IoT de la página Agregar inscripción, proporcione la siguiente información para determinar qué centros de IoT pueden aprovisionar dispositivos de inscripción para:

    Campo Descripción
    Centros de IoT de destino Seleccione uno o varios de los centros de IoT vinculados o agregue un nuevo vínculo a un centro de IoT. Para más información sobre cómo vincular centros de IoT a la instancia de DPS, consulte Vinculación y administración de centros de IoT.
    Directiva de asignación Si seleccionó más de un centro de IoT vinculado, seleccione cómo quiere asignar dispositivos a los distintos centros. Para más información sobre las directivas de asignación, consulte Uso de directivas de asignación.

    Si seleccionó solo un centro de IoT vinculado, se recomienda usar la directiva Distribución uniformemente ponderada.
  7. Seleccione Siguiente: configuración del dispositivo

  8. En la pestaña Configuración del dispositivo de la página Agregar inscripción, proporcione la siguiente información para definir cómo se configurarán los dispositivos recién aprovisionados:

    Campo Descripción
    Id. de dispositivo Proporcione un id. de dispositivo que se asignará al dispositivo aprovisionado en IoT Hub. Si no proporciona un id. de dispositivo, se usará el id. de registro.
    IoT Edge Compruebe la opción Habilitar IoT Edge en los dispositivos aprovisionados si el dispositivo aprovisionado ejecutará Azure IoT Edge. Desactive esta casilla si esta inscripción es para un dispositivo no habilitado para IoT Edge.
    Etiquetas de dispositivo Use este cuadro de texto para proporcionar las etiquetas que quiera aplicar al dispositivo gemelo del dispositivo aprovisionado.
    Propiedades deseadas Use este cuadro de texto para proporcionar las propiedades deseadas que quiera aplicar al dispositivo gemelo del dispositivo aprovisionado.

    Para más información, consulte Información y uso de dispositivos gemelos en IoT Hub.

  9. Seleccione Siguiente: Review + create (Revisar y crear).

  10. En la pestaña Revisar y crear, compruebe todos los valores y seleccione Crear.

Registro del dispositivo

En esta sección, configurará el código de ejemplo para usar Advanced Message Queuing Protocol (AMQP) para enviar la secuencia de arranque del dispositivo a la instancia de Device Provisioning Service. Esta secuencia de arranque hará que el dispositivo se registre en un centro de IoT vinculado a la instancia de Device Provisioning Service.

  1. En Azure Portal, seleccione la pestaña Información general de Device Provisioning Service.

  2. Copie el valor de del Ámbito de id.

    Extract Device Provisioning Service endpoint information from the portal

  3. En la ventana del Explorador de soluciones de Visual Studio, desplácese hasta la carpeta Provision_Samples. Expanda el proyecto de ejemplo denominado prov_dev_client_sample. Expanda Archivos de origen y abra prov_dev_client_sample.c.

  4. Cerca de la parte superior del archivo, busque las instrucciones #define para cada protocolo de dispositivo, tal como se muestra a continuación. Asegúrese de que solo SAMPLE_AMQP tenga quitada la marca de comentario.

    Actualmente, el protocolo MQTT no se admite para la inscripción individual de 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. Busque la constante id_scope y reemplace el valor por el valor de Ámbito de id. que copió anteriormente.

    static const char* id_scope = "0ne00002193";
    
  6. Busque la definición de la función main() en el mismo archivo. Asegúrese de que la variable hsm_type está establecida en SECURE_DEVICE_TYPE_TPM, tal como se muestra a continuación.

    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. Haga clic con el botón derecho en el proyecto prov_dev_client_sample y seleccione Establecer como proyecto de inicio.

  8. En el menú de Visual Studio, seleccione Depurar>Iniciar sin depurar para ejecutar la solución. En la solicitud para volver a compilar el proyecto, seleccione para recompilar el proyecto antes de ejecutarlo.

    La salida siguiente es un ejemplo del cliente de dispositivo de aprovisionamiento de ejemplo que ha arrancado correctamente y se conecta a la instancia del servicio Device Provisioning para obtener información de IoT Hub y registrarse:

    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. En Azure Portal, seleccione la pestaña Información general de Device Provisioning Service.

  2. Copie el valor de del Ámbito de id.

    Copy provisioning service Scope ID from the portal blade

  3. En un símbolo del sistema, cambie los directorios al directorio del proyecto del ejemplo de aprovisionamiento de dispositivo de TPM.

     cd '.\azure-iot-sdk-csharp\provisioning\device\samples\how to guides\TpmSample\'
    
  4. Ejecute el comando siguiente para registrar el dispositivo. Reemplace <IdScope> por el valor de DPS que ha copiado y <RegistrationId> por el valor que ha usado al crear la inscripción del dispositivo.

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

    Si el registro del dispositivo se realiza correctamente, verá los siguientes mensajes:

    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. En Azure Portal, seleccione la pestaña Información general de Device Provisioning Service.

  2. Copie el valor de del Ámbito de id.

    Extract Device Provisioning Service endpoint information from the portal blade

  3. Abra el editor de texto que prefiera.

  4. En la carpeta registerdevice, cree un nuevo archivo RegisterDevice.js.

  5. Agregue las siguientes instrucciones require al principio del archivo 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

    El SDK de IoT de Azure para Node.js admite protocolos adicionales, como AMQP, AMQP WS y MQTT WS. Para ver más ejemplos, consulte Samples for the Azure IoT Device Provisioning Service SDK for Node.js (Ejemplos del SDK de servicio de aprovisionamiento de dispositivos de Azure IoT para Node.js).

  6. Agregue las variables globalDeviceEndpoint e idScope y úselas para crear una instancia de ProvisioningDeviceClient. Reemplace {globalDeviceEndpoint} e {idScope} por los valores de Punto de conexión global del dispositivo y Ámbito de id del paso 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. Agregue la siguiente función para implementar el método en el 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. Guarde el archivo RegisterDevice.js y ciérrelo.

  9. Ejecute el siguiente comando:

    node RegisterDevice.js
    
  10. Tenga en cuenta los mensajes que simulan el arranque del dispositivo y la conexión al servicio Device Provisioning para obtener la información del centro de IoT.

  1. En la ventana de comandos que ejecuta el código de ejemplo de Java en la máquina, presione Entrar para seguir ejecutando la aplicación. Tenga en cuenta los mensajes que simulan el arranque del dispositivo y la conexión al servicio Device Provisioning para obtener la información del centro de IoT.

    Java TPM device program final

Confirmación del registro de aprovisionamiento de dispositivos

  1. Inicie sesión en Azure Portal.

  2. En el menú de la izquierda o en la página del portal, seleccione Todos los recursos.

  3. Seleccione el centro de IoT al que se asignó el dispositivo.

  4. En el menú Exploradores, seleccione Dispositivos de IoT.

  1. Si el dispositivo se aprovisionó correctamente, el id. del dispositivo debe aparecer en la lista, con el estado configurado como habilitado. Si no ve el dispositivo, seleccione Actualizar en la parte superior de la página.

    Device is registered with the IoT hub for C

  1. Si el dispositivo se aprovisionó correctamente, el id. del dispositivo debe aparecer en la lista, con el estado configurado como habilitado. Si no ve el dispositivo, seleccione Actualizar en la parte superior de la página.

    Device is registered with the IoT hub for C#

  1. Si el dispositivo se aprovisionó correctamente, el id. del dispositivo debe aparecer en la lista, con el estado configurado como habilitado. Si no ve el dispositivo, seleccione Actualizar en la parte superior de la página.

    Device is registered with the IoT hub for Node.js

  1. Si el dispositivo se aprovisionó correctamente, el id. del dispositivo debe aparecer en la lista, con el estado configurado como habilitado. Si no ve el dispositivo, seleccione Actualizar en la parte superior de la página.

    Device is registered with the IoT hub

Nota:

Si ha cambiado el valor predeterminado de Estado inicial del dispositivo gemelo en la entrada de inscripción para el dispositivo, el dispositivo puede extraer el estado gemelo deseado desde el centro y actuar en consecuencia. Para más información, consulte Información y uso de dispositivos gemelos en IoT Hub.

Limpieza de recursos

Si planea seguir trabajando con el ejemplo de cliente de dispositivo y explorándolo, no quite los recursos que se hayan creado en esta guía de inicio rápido. Si no va a continuar, use el siguiente comando para eliminar todos los recursos que se hayan creado en la guía de inicio rápido.

Eliminación de la inscripción de dispositivos

  1. Cierre la ventana de salida de ejemplo del cliente del dispositivo en su máquina.

  2. En Azure Portal, seleccione Todos los recursos en el menú de la izquierda.

  3. Seleccione la instancia de Device Provisioning Service.

  4. En el menú de Configuración, seleccione Administrar inscripciones.

  5. Seleccione la pestaña Inscripciones individuales.

  6. Active la casilla situada junto al campo Id. de registro del dispositivo que registró en este inicio rápido.

  7. En la parte superior de la página, seleccione Eliminar.

Elimine el registro del dispositivo de IoT Hub

  1. En Azure Portal, seleccione Todos los recursos en el menú de la izquierda.

  2. Seleccione IoT Hub.

  3. En el menú Exploradores, seleccione Dispositivos de IoT.

  4. Active la casilla situada junto al campo Id. de dispositivo del dispositivo que registró en este inicio rápido.

  5. En la parte superior de la página, seleccione Eliminar.

Pasos siguientes

En este inicio rápido, ha aprovisionado un único dispositivo en el centro de IoT mediante una inscripción individual. Luego, obtenga información sobre cómo aprovisionar múltiples dispositivos en varios centros.